Я должен передать столбец от одной таблицы до другого. Исходная таблица имеет другое сопоставление, чем целевая таблица (latin1_general_ci и latin1_swedish_ci).
Я использую
UPDATE target
LEFT JOIN source ON target.artnr = source.artnr
SET target.barcode = source.barcode
Я получаю "недопустимое соединение сопоставлений".
Что быстрое исправление должно получить эту работу, не имея необходимость изменять любую таблицу? Я попробовал, ПРЕОБРАЗОВЫВАЮТ и СОПОСТАВЛЯЮТ для выполнения целой операции в UTF-8, но это не помогло. "штрихкод" содержит числовые данные только (даже при том, что они все - VARCHARs), таким образом, нет никаких забот сопоставления так или иначе. Я должен сделать это только однажды.
Править: Я отсортировал его с помощью a
CAST(fieldname as unsigned)
на каждом включенном поле. Я смог сделать это в этом случае, потому что только числовые данные были затронуты, но будет хорошо знать более общий подход к этому, таким образом, я оставлю вопрос открытым.
Я пробовал CONVERT и COLLATE, чтобы выполнить всю операцию в UTF-8, но это не помогло.
Меня это беспокоило, поэтому сегодня я создал эти таблицы и успешно запустил эту:
UPDATE target
LEFT JOIN source ON( target.artnr = source.artnr COLLATE latin1_swedish_ci )
SET target.barcode = source.barcode
Как насчет объединения на select только с 2 числовыми столбцами?
UPDATE target
LEFT JOIN (
SELECT
artnr COLLATE latin1_swedish_ci AS artnr,
barcode COLLATE latin1_swedish_ci AS barcode
FROM source
) source ON target.artnr = source.artnr
SET target.barcode = source.barcode