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

다른 테이블에 존재하지 않는 레코드를 한 테이블에서 선택하는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-19 16:27:09377검색

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

데이터베이스 테이블에서 누락된 레코드 식별

데이터베이스 쿼리에서는 다른 테이블에 해당 항목이 없는 한 테이블에서 데이터를 검색해야 하는 경우가 많습니다. 예를 들어 이를 설명해 보겠습니다.

시나리오:

다음 구조를 갖는 'table1'과 'table2'라는 두 개의 테이블이 있습니다.

<code>table1 (id, name)
table2 (id, name)</code>

목표:

우리의 목표는 'table1'에 없는 'name' 값을 'table2'에서 추출하는 것입니다.

순진한 접근 방식은 다음과 같습니다.

<code>SELECT name
FROM table2
-- where name is not in table1</code>

안타깝게도 이 SQL 쿼리는 불완전하여 예상한 결과를 얻지 못합니다.

효과적인 해결책:

올바른 접근 방식은 LEFT JOIN:

을 활용하는 것입니다.
<code class="language-sql">SELECT t2.name
FROM table2 t2
LEFT JOIN table1 t1 ON t1.name = t2.name
WHERE t1.name IS NULL;</code>

설명:

  • LEFT JOIN: 이렇게 하면 'table1'의 일치하는 행에 관계없이 'table2'의 모든 행이 결과 집합에 포함됩니다.
  • WHERE 절: 조건 WHERE t1.name IS NULL은 결과를 필터링하여 'table1'에 해당 '이름'이 없는 'table2'의 행만 유지합니다.
  • 필드 선택: 쿼리는 'table2'에서 'name' 열을 선택합니다. 이는 최종 결과에서 해당 테이블에 존재한다고 보장되는 유일한 필드이기 때문입니다.

LEFT JOIN 기술은 다양한 데이터베이스 시스템에서 널리 호환되며, 테이블 간에 누락된 레코드를 식별하는 강력한 방법을 제공합니다.

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

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