집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 쿼리에서 JOIN과 쉼표를 혼합하면 '알 수 없는 열' 오류가 발생하는 이유는 무엇입니까?
MySQL 쿼리에서 JOIN과 쉼표를 혼합하면 오류가 발생합니다
문제 설명
다음 MySQL 쿼리를 실행하는 경우:
<code class="language-sql">SELECT m.*, t.* FROM memebers as m, telephone as t INNER JOIN memeberFunctions as mf ON m.id = mf.memeber INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber WHERE mf.function = 32</code>
다음 오류가 발생합니다.
<code>#1054 - Unknown column 'm.id' in 'on clause'</code>
열이 존재하는데도 쿼리가 실패합니다. 이 오류는 ANSI 1992 JOIN 구문과 쉼표가 쿼리에 함께 사용될 때 발생합니다.
솔루션
MySQL 문서에 따르면 JOIN과 쉼표를 혼합하는 것은 피해야 합니다. 이 문제를 해결하려면 쉼표를 적절한 JOIN 연산자(CROSS, INNER, LEFT)로 바꾸세요.
INNER JOIN을 사용하여 업데이트된 쿼리는 다음과 같습니다.
<code class="language-sql">SELECT m.*, t.* FROM memebers as m INNER JOIN telephone as t ON <join condition> INNER JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32 INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber</code>
데카르트 곱을 방지하려면 m
과 t
사이의 조인 조건을 지정해야 합니다.
추가 참고사항
명확성과 효율성을 위해 쉼표 대신 JOIN 연산자를 사용해야 합니다. 쉼표는 특히 여러 테이블을 결합할 때 예기치 않은 동작이 발생할 수 있는 CROSS JOIN을 나타냅니다. 명시적인 JOIN 연산자를 사용하면 테이블 간의 특정 관계를 정의하여 원하는 결과를 얻을 수 있습니다.
위 내용은 MySQL 쿼리에서 JOIN과 쉼표를 혼합하면 '알 수 없는 열' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!