我正在编写一个无效的查询
我的查询:
SELECT *
FROM admin_marker
WHERE admin_marker.city NOT IN (SELECT target FROM messsage)
它说
#1267 - 非法混合的校对
(utf8_general_ci,IMPLICIT)和
(utf8_unicode_ci,IMPLICIT)用于操作' ='
答案 0 :(得分:16)
答案 1 :(得分:3)
这通常是通过比较两个不兼容的排序字符串或尝试将不同排序规则的数据选择到组合列中引起的。条款COLLATE
允许您指定查询中使用的排序规则。
或者您可以ALTER TABLE
匹配COLLATE
答案 2 :(得分:3)
问题在于两个表之间的排序,所以请尝试COLLATE,这可能是由COLLATE的帮助轻松解决。
SELECT * FROM admin_marker WHERE admin_marker.city NOT IN (SELECT target COLLATE utf8_general_ci FROM messsage)
并检查其数据库是否相同
不兼容的排序规则或尝试将不同排序规则的数据选择到组合列中。 COLLATE子句允许您指定查询中使用的排序规则。