MySQL 中的非法混合排序规则 =

illegal mix of collations in MySQL for operation =

我有一个 table abc 有 2 列:

id INT(3) name VARCHAR(10)

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

然后我有另一个 table xyz 有 2 列:

id INT(3) name VARCHAR(10)

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

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

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

我已经检查了 table 的排序规则,它们是相同的,但它仍然给我错误: illegal mix of collations (utf8_general_ci implicit) and (utf8_unicode_ci implicit) for operation =

我也尝试了 NOT IN 的替代方法,即使用 LEFT JOIN,但它仍然给我同样的错误。

我已经坚持了很长时间了。任何帮助都是 appreciated.Thanks

可能的解决方法:

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

另一个帮助可能是

SET NAMES utf8 COLLATE utf8_unicode_ci;