2017-05-19 2 views
0

의 불법 믹스 난 하위 쿼리는 두 개의 서로 다른 데이터베이스에서 두 테이블의 조합을 포함하는 다음과 같은 오류 메시지가MYSQL 오류 : 데이터 정렬

[Err] 1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

를 수신하고 있습니다. 내가 실행하려고 쿼리 인해 당신이 쿼리에서 명시 적으로 값을 제공 collation.If의 변화에 ​​무슨 일이 있었

SELECT c.CORRECTION_NO FROM (
    SELECT "regm2017" as `SESSION`,SERIALNO,NAME,FATHER 
    FROM regm2017.master r17 
    WHERE r17.IS_DELETED=0 
    UNION 
    SELECT "regm2016" as `SESSION`,SERIALNO,NAME,FATHER 
    FROM regm2016.master r16 
    WHERE r16.IS_DELETED=0 
    ) as r JOIN corrections_registration as c ON  c.SERIALNO = r.SERIALNO 
    AND c.`SESSION`= r.`SESSION`; 

답변

0

아래 주어, 정렬은 연결에서 가져온 것입니다 수.

다음과 같이 사용할 수 있습니다.

 SELECT c.CORRECTION_NO FROM (
    SELECT "regm2017" COLLATE utf8_general_ci as > `SESSION`,SERIALNO,NAME,FATHER 
    FROM regm2017.master r17 
    WHERE r17.IS_DELETED=0 
    UNION 
    SELECT "regm2016" COLLATE utf8_general_ci as `SESSION`,SERIALNO,NAME,FATHER 
    FROM regm2016.master r16 
    WHERE r16.IS_DELETED=0 
    ) as r JOIN corrections_registration as c ON c.SERIALNO = 
    r.SERIALNO 
    AND c.`SESSION`= r.`SESSION`;` 

또는

SELECT c.CORRECTION_NO FROM (
    SELECT "regm2017" COLLATE latin1_swedish_ci as `SESSION`,SERIALNO,NAME,FATHER 
    FROM regm2017.master r17 
    WHERE r17.IS_DELETED=0 
    UNION 
    SELECT "regm2016" COLLATE latin1_swedish_ci as `SESSION`,SERIALNO,NAME,FATHER 
    FROM regm2016.master r16 
    WHERE r16.IS_DELETED=0 
) as r JOIN corrections_registration as c ON  c.SERIALNO = r.SERIALNO 
    AND c.`SESSION`= r.`SESSION`; 
+0

일부 형식이 대답은 내 컴퓨터에서 할 어차피하시기 바랍니다 – MohanaPriyan