以下是我的查询,其中我从两个不同的表中获得结果,但它给了我以下错误,请让我知道我做错了什么:
错误:#1267 - 非法混合排序(utf8_general_ci,COERCIBLE)和(latin1_swedish_ci,IMPLICIT)进行操作'='
SELECT MD5( pre_quiz.qid ),
pre_quiz.quiz_title,
pre_quiz.quiz_desc,
pre_course.cname
FROM pre_quiz
LEFT JOIN pre_course ON
MD5( pre_course.cid ) = pre_quiz.quiz_course_id
WHERE pre_quiz.createdby = 'user'
ORDER BY pre_quiz.quiz_title
答案 0 :(得分:0)
检查每个表的排序规则类型,并确保它们具有相同的排序规则。
之后还检查您在操作中使用的每个表字段的排序规则类型。
以下是检查哪些列是错误的排序规则的方法:
SELECT table_schema, table_name, column_name, character_set_name, collation_name
FROM information_schema.columns
WHERE collation_name = 'latin1_general_ci'
ORDER BY table_schema, table_name,ordinal_position;
这是修复它的查询:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin1 COLLATE 'latin1_swedish_ci';
修改强>
更改列的排序规则
ALTER TABLE MyTable ALTER COLUMN Column1 [TYPE] COLLATE [NewCollation]
<强> Source 强>