집 >데이터 베이스 >MySQL 튜토리얼 >다른 테이블에 존재하지 않는 레코드를 한 테이블에서 선택하는 방법은 무엇입니까?
데이터베이스 쿼리에서는 다른 테이블에 해당 항목이 없는 한 테이블에서 데이터를 검색해야 하는 경우가 많습니다. 예를 들어 이를 설명해 보겠습니다.
시나리오:
다음 구조를 갖는 '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'의 행만 유지합니다.이 LEFT JOIN
기술은 다양한 데이터베이스 시스템에서 널리 호환되며, 테이블 간에 누락된 레코드를 식별하는 강력한 방법을 제공합니다.
위 내용은 다른 테이블에 존재하지 않는 레코드를 한 테이블에서 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!