Недопустимое соединение сопоставлений в MySQL

Я должен передать столбец от одной таблицы до другого. Исходная таблица имеет другое сопоставление, чем целевая таблица (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) на каждом включенном поле. Я смог сделать это в этом случае, потому что только числовые данные были затронуты, но будет хорошо знать более общий подход к этому, таким образом, я оставлю вопрос открытым.

11
задан Pekka supports GoFundMonica 24 February 2010 в 18:38
поделиться

2 ответа

Я пробовал CONVERT и COLLATE, чтобы выполнить всю операцию в UTF-8, но это не помогло.

Меня это беспокоило, поэтому сегодня я создал эти таблицы и успешно запустил эту:

UPDATE target
LEFT JOIN  source ON( target.artnr = source.artnr COLLATE latin1_swedish_ci )
SET target.barcode = source.barcode
27
ответ дан 3 December 2019 в 03:35
поделиться

Как насчет объединения на 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
0
ответ дан 3 December 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: