MySQL查询不适用于NOT IN

时间:2015-07-10 05:50:04

标签: php mysql mysql-error-1064

我正在编写一个无效的查询

我的查询:

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

它说

  #1267 - 非法混合的校对

  (utf8_general_ci,IMPLICIT)和
  (utf8_unicode_ci,IMPLICIT)用于操作' ='

3 个答案:

答案 0 :(得分:16)

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

COLLATE

Demo here

答案 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子句允许您指定查询中使用的排序规则。