LEFT JOIN을 사용하여 존재하지 않는 데이터 찾기
SQL에서는 두 테이블을 비교하여 하나의 테이블에 존재하는 데이터를 식별해야 하는 경우가 있습니다. 하지만 다른 하나는 아닙니다. 이 시나리오는 누락된 레코드를 확인할 때 흔히 발생합니다.
다음 테이블을 고려하세요.
TABLE1
id | name | address |
---|---|---|
1 | mm | 123 |
2 | nn | 143 |
TABLE2
name | age |
---|---|
mm | 6 |
oo | 9 |
존재하지 않는 것을 찾는 것이 목표입니다. TABLE2와 비교하여 TABLE1의 이름을 지정합니다. 이 경우 이름이 "nn"인 TABLE1의 두 번째 행이 TABLE2에 없습니다.
INNER JOIN을 사용한 초기 시도:
SELECT w.* FROM TABLE1 w INNER JOIN TABLE2 v ON w.name <> v.name
원하는 검색에 실패합니다. INNER JOIN은 두 테이블 모두에서 일치하는 행만 반환하기 때문입니다.
해결책은 LEFT JOIN을 사용하는 것입니다. 대신:
SELECT w.* FROM TABLE1 w LEFT JOIN TABLE2 v ON w.name = v.name WHERE ISNULL(v.name);
LEFT JOIN은 외부 조인을 수행합니다. 즉, 오른쪽 테이블(TABLE2)에 일치하는 행이 있는지 여부에 관계없이 왼쪽 테이블(TABLE1)의 모든 행을 반환합니다. ISNULL(v.name) 조건은 TABLE2의 해당 이름 필드가 null인 TABLE1의 행을 확인하여 해당 이름이 TABLE2에 존재하지 않음을 나타냅니다.
출력은 다음과 같습니다.
id | name | address |
---|---|---|
2 | nn | 143 |
이 쿼리는 존재하지 않는 이름 "nn"을 사용하여 TABLE1에서 행을 성공적으로 검색합니다.
위 내용은 SQL의 LEFT JOIN이 한 테이블에는 존재하지만 다른 테이블에는 존재하지 않는 데이터를 어떻게 식별할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!