MySQL-查询不适用于 NOT IN

MySQL-query is not working with NOT IN

我正在编写一个无法正常工作的查询

我的查询:

SELECT * 
FROM admin_marker 
WHERE admin_marker.city NOT IN (SELECT target FROM messsage)

它说

#1267 - Illegal mix of collations
(utf8_general_ci,IMPLICIT) and
(utf8_unicode_ci,IMPLICIT) for operation '='

这通常是由于比较两个排序规则不兼容的字符串或试图将不同排序规则的数据 select 合并到一个组合列中引起的。 COLLATE 子句允许您指定查询中使用的排序规则。

或者您可以ALTER TABLE匹配COLLATE

您遇到的问题是由于两个表之间的排序规则不兼容。解决它的一种方法是在查询中使用 COLLATE 子句:

SELECT * 
FROM admin_marker 
WHERE admin_marker.city NOT IN (SELECT target COLLATE utf8_general_ci 
                                FROM messsage)

Demo here

问题出在两个表之间的排序规则中,所以请为此尝试使用 COLLATE,可能在 COLLATE 的帮助下很容易解决这个问题。

SELECT * FROM admin_marker WHERE admin_marker.city NOT IN (SELECT target COLLATE utf8_general_ci FROM messsage)

并检查其数据库是否相同

不兼容的排序规则或尝试将不同排序规则的数据select合并到一个组合列中。 COLLATE 子句允许您指定查询中使用的排序规则。