查询不适用于其中的md5(id)

时间:2014-02-08 17:59:51

标签: mysql sql

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

1 个答案:

答案 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(与您使用的表格相同)。