Я имею проблему с конкретным подзапросом:подзапросов с нагрузкой INFILE данных
LOAD DATA INFILE 'some_address' INTO TABLE 'some_table'
FIELDS TERMINATED BY 'field_terminate' ENCLOSED BY '"'
ESCAPED BY '\\' ('fieldX', 'fieldY'....'fieldZ')
SET fieldZ= (SELECT Id FROM another_table WHERE Name = fieldZ)
То, что я в принципе хочу достичь что-то влияет иметь поле из файла заменяется на это соответствующий ID, который сидит довольно в другой таблице во время выполнения запроса. Возможно ли это?
Спасибо за кучу заранее. Я посмотрел по всему Интернету. Пока не повезло, но ..
О, с вышеуказанным запросом я получаю сообщение об ошибке, в основном говорящее, что подзапрос не является скалярным. Очевидно, что подзапрос не используется для выполнения каждой строки, а выполняется для всех полей Z каждой строки, объединенной вместе (поэтому возвращается несколько идентификаторов).
Вы не можете сделать соединение между данными в файле и данных в другой таблице. Вы должны сделать это как две отдельные операции: сначала загрузите таблицу, затем обновите ее, используя соединение с другой таблицей. – Barmar
: (О, дорогой! Ну, я рад, что я проверил, прежде чем вытащить больше из моих волос! – captainspi
Вы также можете установить триггер в таблице, чтобы, если вы вставляете данные, где fieldZ имеет значение null, он может захватить ID из другой_таблицы. Это в основном то же самое, что и двухэтапный процесс, он просто автоматизирует второй шаг для вас. –