我正在写一个不能正常工作的查询。
我的问题是:
SELECT *
FROM admin_marker
WHERE admin_marker.city NOT IN (SELECT target FROM messsage)
上面写着
#1267 -非法混合整理 (utf8_general_ci,隐式)和 (utf8_unicode_ci,隐式)用于操作“=”
发布于 2015-07-10 05:58:31
您所面临的问题是两个表之间不兼容的排序规则造成的。解决这个问题的一种方法是在查询中使用COLLATE
子句:
SELECT *
FROM admin_marker
WHERE admin_marker.city NOT IN (SELECT target COLLATE utf8_general_ci
FROM messsage)
Demo here
发布于 2015-07-10 05:54:29
这通常是通过比较两个不兼容排序规则字符串或试图将不同排序规则的数据选择到组合列中造成的。子句COLLATE
允许您指定查询中使用的排序规则。
或者您可以使用ALTER TABLE
来匹配COLLATE
发布于 2015-07-10 06:12:31
问题是在两个表之间的排序,所以请尝试整理这一点,这可能是通过整理的帮助很容易解决。
SELECT * FROM admin_marker WHERE admin_marker.city NOT IN (SELECT target COLLATE utf8_general_ci FROM messsage)
并检查其数据库是否相同。
不兼容排序规则或试图将不同排序规则的数据选择到组合列中。子句排序规则允许您指定查询中使用的排序规则。
https://stackoverflow.com/questions/31333361
复制相似问题