집 >데이터 베이스 >MySQL 튜토리얼 >MySQL이 EXCEPT를 지원하지 않는 이유는 무엇이며 어떻게 동일한 결과를 얻을 수 있습니까?
MySQL 쿼리의 EXCEPT 구문 오류
MySQL 사용자가 쿼리에 EXCEPT 연산자를 사용하려고 하면 구문 오류가 발생할 수 있습니다. 이 오류는 하위 쿼리의 조건과 일치하는 기본 테이블의 행을 제외하려고 할 때 자주 발생합니다.
다음 예를 고려하세요.
SELECT s.sno FROM students s EXCEPT SELECT t.sno FROM take t WHERE t.cno = 'CS112';
이 쿼리는 기본 테이블에서 모든 학생 ID를 검색하려고 시도합니다. "CS112" 과정의 "take" 테이블에 없는 "students" 테이블. 그러나 MySQL은 EXCEPT 구문을 지원하지 않습니다.
대체 솔루션:
원하는 결과를 얻으려면 두 가지 대체 접근 방식이 있습니다.
SELECT s.sno FROM students s WHERE s.sno NOT IN ( SELECT t.sno FROM take t WHERE t.cno = 'CS112' );
이 쿼리는 "students" 테이블의 학생 ID가 "CS112" 과정의 "take" 테이블에 없는지 명시적으로 확인합니다.
SELECT s.sno FROM students s LEFT JOIN take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112';
이 쿼리는 LEFT JOIN을 사용하여 "students" 테이블과 "take" 테이블 간의 학생 ID를 일치시킵니다. 그런 다음 IFNULL 함수를 사용하여 "take" 테이블의 "cno" 필드가 null인지 확인하여 "CS112"에 등록되지 않은 학생을 나타냅니다.
사용 예:
질문의 모형 데이터를 사용하여 NULL 검사를 통한 LEFT JOIN은 다음을 생성합니다. 결과:
SELECT s.sno FROM temp_students s LEFT JOIN temp_take t ON s.sno = t.sno WHERE IFNULL(t.cno, '') != 'CS112';
출력:
5 6 7 8 9 10
따라서 사용자는 EXCEPT 구문을 사용하는 대신 NOT IN 하위 쿼리 또는 NULL 검사 전략과 함께 LEFT JOIN을 사용하여 MySQL에서 행을 제외할 수 있습니다. 쿼리합니다.
위 내용은 MySQL이 EXCEPT를 지원하지 않는 이유는 무엇이며 어떻게 동일한 결과를 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!