>데이터 베이스 >MySQL 튜토리얼 >다른 테이블에는 존재하지 않는 고유한 값을 한 테이블에서 선택하는 방법은 무엇입니까?

다른 테이블에는 존재하지 않는 고유한 값을 한 테이블에서 선택하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-19 16:31:10291검색

How to Select Distinct Values from One Table That Don't Exist in Another?

다른 테이블에 없는 고유한 레코드 추출: 상세 가이드

자주 발생하는 데이터베이스 작업에는 다른 테이블에는 없는 고유한 항목을 한 테이블에서 검색하는 작업이 포함됩니다. 예를 들어 설명해 보겠습니다.

<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 열을 기반으로 table1table2의 행을 연결하기 위해 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>

세부 분석:

쿼리 기능은 다음과 같습니다.

  1. table1의 모든 항목을 선택하고 table2의 해당 항목과 결합하려고 시도합니다.
  2. WHERE 절은 table2.name 열이 NULL인 행을 식별합니다. NULL 값은 해당 table1 행이 table2에 일치하는 항목이 없음을 나타냅니다.
  3. 마지막으로, 선택한 모든 행에 대해 name에 존재하는 것이 보장된 table1 열만 결과에서 반환합니다.

중요 사항:

ANSI 92 SQL을 지원하는 수많은 데이터베이스 시스템에서 일반적으로 효율적이고 호환되지만 이 접근 방식이 항상 가장 빠른 것은 아닙니다. NOT IN 연산자를 사용하는 것과 같은 대안은 특정 상황에서 더 나은 성능을 제공할 수 있습니다.

위 내용은 다른 테이블에는 존재하지 않는 고유한 값을 한 테이블에서 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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