MySQL "NOT IN" 쿼리 오류 문제 해결
최근 사용자가 단순해 보이는 MySQL 쿼리를 시도하는 동안 구문 오류가 발생했습니다. 목표는 Table1
열 값이 principal
에 없는 Table2
에서 모든 행을 선택하는 것이었습니다. 초기의 잘못된 쿼리는 다음과 같습니다.
<code class="language-sql">SELECT * FROM Table1 WHERE Table1.principal NOT IN Table2.principal</code>
이로 인해 오류가 발생하여 사용자는 상충되는 온라인 조언을 토대로 MySQL이 NOT IN
절을 지원하지 않을 수 있다고 믿게 되었습니다. 일부 소식통은 복잡한 해결 방법을 제안했습니다.
그러나 MySQL은 NOT IN
를 지원하지만 위에 사용된 구문에 결함이 있었습니다. 올바른 구문에는 하위 쿼리가 필요합니다.
<code class="language-sql">SELECT * FROM Table1 WHERE Table1.principal NOT IN (SELECT principal FROM Table2)</code>
이 수정된 쿼리는 하위 쿼리 (SELECT principal FROM Table2)
를 사용하여 principal
의 Table2
값 집합을 명시적으로 정의합니다. 그런 다음 MySQL은 각 Table1.principal
값을 이 집합과 정확하게 비교하여 일치하는 항목이 없는 행만 반환합니다.
원래 오류는 NOT IN
연산자를 잘못 적용하여 발생했습니다. 하위 쿼리를 포함하면 데이터베이스가 쿼리를 성공적으로 실행하고 예상 결과를 산출하는 데 필요한 구조를 제공합니다.
위 내용은 내 MySQL 'NOT IN' 쿼리가 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!