>데이터 베이스 >MySQL 튜토리얼 >MySQL 쿼리에서 JOIN과 쉼표를 혼합하면 '알 수 없는 열' 오류가 발생하는 이유는 무엇입니까?

MySQL 쿼리에서 JOIN과 쉼표를 혼합하면 '알 수 없는 열' 오류가 발생하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-09 10:46:49469검색

Why Does Mixing JOINs and Commas in MySQL Queries Cause

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>

데카르트 곱을 방지하려면 mt 사이의 조인 조건을 지정해야 합니다.

추가 참고사항

명확성과 효율성을 위해 쉼표 대신 JOIN 연산자를 사용해야 합니다. 쉼표는 특히 여러 테이블을 결합할 때 예기치 않은 동작이 발생할 수 있는 CROSS JOIN을 나타냅니다. 명시적인 JOIN 연산자를 사용하면 테이블 간의 특정 관계를 정의하여 원하는 결과를 얻을 수 있습니다.

위 내용은 MySQL 쿼리에서 JOIN과 쉼표를 혼합하면 '알 수 없는 열' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.