MySQL中用于操作的非法混合排序=

时间:2018-03-20 15:34:28

标签: mysql collation notin

我有一个包含2列的表abc

id INT(3) name VARCHAR(10)

此表及其所有列的默认排序规则为utf8_unicode_ci

然后我有另一个表xyz,它有两列:

id INT(3) name VARCHAR(10)

此表及其所有列的默认排序规则也是utf8_unicode_ci

现在我正在解雇这个select声明:

SELECT NAME FROM abc WHERE ID NOT IN (SELECT ID FROM XYZ);

我检查了两个表的排序规则并且它们是相同的,但它仍然给出了错误: illegal mix of collations (utf8_general_ci implicit) and (utf8_unicode_ci implicit) for operation =

我还尝试了NOT IN的备用广告,即使用LEFT JOIN,但它仍然给我同样的错误。

我已经坚持了很久了。感谢任何帮助。谢谢

1 个答案:

答案 0 :(得分:0)

可能的解决方法:

SELECT NAME
    FROM abc
    LEFT JOIN XYZ  USING(ID)
    WHERE XYZ.ID IS NULL;

另一个帮助可能是

SET NAMES utf8 COLLATE utf8_unicode_ci;