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;
我有一个 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;