MySQL 쿼리에서 ANSI 1992 JOIN과 쉼표를 혼합하여 발생하는 문제
MySQL 쿼리에서 ANSI 1992 JOIN 구문과 쉼표로 구분된 테이블 조인 구문을 모두 사용하는 경우 "'on 절'의 알 수 없는 열 'm.id'" 오류가 발생할 수 있습니다. 이는 두 구문을 혼합하면 쿼리 구문이 모호해질 수 있기 때문입니다.
문제 해결
MySQL 문서에 따르면 쉼표 기반 테이블 조인 구문(예: members as m, telephone as t
)과 명시적인 JOIN 절을 혼합하는 것은 권장되지 않습니다. 이 문제를 해결하려면 쉼표를 CROSS/INNER/LEFT JOIN
문으로 바꾸세요.
이유 설명
이전에는 쉼표 연산자와 JOIN의 우선 순위가 동일했지만 최신 MySQL 버전에서는 JOIN의 우선 순위가 더 높습니다. 따라서 쉼표 연산자는 더 이상 JOIN 절보다 우선하지 않습니다. 이는 쿼리 해석기가 피연산자를 잘못 구분하여 ON 절에 오류가 발생함을 의미합니다.
수정된 쿼리
구문을 수정하려면 명시적인 JOIN 절을 사용하여 쿼리를 다시 작성하세요.
<code class="language-sql">SELECT m.*, t.* FROM memebers AS m JOIN telephone AS t ON m.id = t.member_id -- 添加连接条件 JOIN memeberFunctions AS mf ON m.id = mf.memeber AND mf.function = 32 JOIN mitgliedTelephone AS mt ON m.id = mt.memeber;</code>
기타 참고사항
수정된 쿼리는 기준을 지정하지 않았기 때문에 m
과 t
사이의 교차 조인을 가정합니다. 필요한 경우 적절한 조인 조건을 포함하도록 쿼리를 수정해야 할 수도 있습니다. 예시로 가상 조인 조건 ON m.id = t.member_id
을 추가했습니다. 실제 데이터베이스 테이블 구조에 따라 이 조건을 수정해야 합니다.
위 내용은 MySQL 쿼리에서 ANSI 1992 JOIN과 쉼표를 혼합하면 '알 수 없는 열' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!