使用左连接查询中的问题

时间:2014-02-07 11:01:45

标签: mysql

以下是我的查询,其中我从两个不同的表中获得结果,但它给了我以下错误,请让我知道我做错了什么:

错误:#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

1 个答案:

答案 0 :(得分:0)

  1. 检查每个表的排序规则类型,并确保它们具有相同的排序规则。

  2. 之后还检查您在操作中使用的每个表字段的排序规则类型。

  3. 以下是检查哪些列是错误的排序规则的方法:

    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