mySQL中非法混合排序规则

Pek*_*ica 11 mysql collation character-encoding

我需要将一列从一个表转移到另一个表.源表具有与目标表(latin1_general_ci和latin1_swedish_ci)不同的排序规则.

我用

UPDATE target 
LEFT JOIN source ON target.artnr = source.artnr 
SET target.barcode = source.barcode
Run Code Online (Sandbox Code Playgroud)

我得到了"非法混合排序".

什么是快速解决方案,让这个工作,而不必更改任何一个表?我尝试使用CONVERT和COLLATE以UTF-8运行整个操作,但这没有帮助."条形码"仅包含数字数据(即使它们都是VARCHAR),因此无论如何都没有整理担忧.我只需要这样做一次.

编辑:我使用CAST(fieldname as unsigned)涉及的每个字段对其进行排序.在这种情况下,我能够做到这一点,因为只有数字数据受到影响,但知道一个更通用的方法会很好,所以我将问题保持开放.

dev*_*ler 27

我尝试使用CONVERT和COLLATE以UTF-8运行整个操作,但这没有帮助.

它让我烦恼,所以今天我创建了这些表并成功运行了这个表:

UPDATE target
LEFT JOIN  source ON( target.artnr = source.artnr COLLATE latin1_swedish_ci )
SET target.barcode = source.barcode
Run Code Online (Sandbox Code Playgroud)