Folowing是我的查询,当我在where子句中使用ID
时它运行正常,但是当我在md5(id)
中包装ID并且给出以下错误时它不会。
#1267 - Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation '='
有没有办法可以通过在md5(id)
中包装id来使查询工作:
SELECT md5(id),username FROM login
where md5(id) NOT IN (select user_id from logged where given_by = 'drothy')
ORDER BY dt_created DESC
答案 0 :(得分:1)
错误已经表示你的表中有两个不同的排序规则,将一个表的一个排序规则更改为与其他表相同
ALTER TABLE login CONVERT TO CHARACTER SET utf8
如果您的表已经latin1_swedish_ci
,那么将记录表更改为latin1_swedish_ci
或同时使用utf8_general_ci
然后运行您的查询正常
编辑:
如果您使用的是mysqli,请在连接后立即发出此命令:
$mysqli->set_charset("utf8");
这会将您的连接编码设置为UTF8(与您使用的表格相同)。