집 >데이터 베이스 >MySQL 튜토리얼 >다른 테이블에는 존재하지 않는 고유한 값을 한 테이블에서 선택하는 방법은 무엇입니까?
다른 테이블에 없는 고유한 레코드 추출: 상세 가이드
자주 발생하는 데이터베이스 작업에는 다른 테이블에는 없는 고유한 항목을 한 테이블에서 검색하는 작업이 포함됩니다. 예를 들어 설명해 보겠습니다.
<code>table1 (id, name) table2 (id, name)</code>
우리의 목표는 table2
에 나타나지 않는 데이터를 table1
에서 선택하는 것입니다. 순진한 접근 방식은 다음과 같습니다.
<code>SELECT name FROM table2 -- excluding those in table1</code>
이것만으로는 부족합니다. 일치하지 않는 별개의 기록을 정확하게 식별하려면 보다 정교한 방법이 필요합니다.
효과적인 솔루션: LEFT JOIN 및 IS NULL
다음 쿼리는 LEFT JOIN
열을 기반으로 table1
및 table2
의 행을 연결하기 위해 name
을 활용합니다. 그런 다음 IS NULL
조건은 일치하는 쌍을 필터링합니다.
<code>SELECT t1.name FROM table1 t1 LEFT JOIN table2 t2 ON t2.name = t1.name WHERE t2.name IS NULL</code>
세부 분석:
쿼리 기능은 다음과 같습니다.
table1
의 모든 항목을 선택하고 table2
의 해당 항목과 결합하려고 시도합니다.WHERE
절은 table2.name
열이 NULL
인 행을 식별합니다. NULL
값은 해당 table1
행이 table2
에 일치하는 항목이 없음을 나타냅니다.name
에 존재하는 것이 보장된 table1
열만 결과에서 반환합니다.중요 사항:
ANSI 92 SQL을 지원하는 수많은 데이터베이스 시스템에서 일반적으로 효율적이고 호환되지만 이 접근 방식이 항상 가장 빠른 것은 아닙니다. NOT IN
연산자를 사용하는 것과 같은 대안은 특정 상황에서 더 나은 성능을 제공할 수 있습니다.
위 내용은 다른 테이블에는 존재하지 않는 고유한 값을 한 테이블에서 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!