我有一个包含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
,但它仍然给我同样的错误。
我已经坚持了很久了。感谢任何帮助。谢谢
答案 0 :(得分:0)
可能的解决方法:
SELECT NAME
FROM abc
LEFT JOIN XYZ USING(ID)
WHERE XYZ.ID IS NULL;
另一个帮助可能是
SET NAMES utf8 COLLATE utf8_unicode_ci;