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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-22 18:47:11930검색

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

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

관계형 데이터베이스에서는 다른 테이블에는 없는 레코드를 한 테이블에서 찾아야 할 수도 있습니다. 일반적인 예는 전화번호부에 등록되지 않은 전화번호를 가진 개인의 통화 기록을 식별하는 것입니다.

다음 시나리오를 고려해보세요.

<code>电话簿 (Phone_book)
+----+------+--------------+
| id | name | phone_number |
+----+------+--------------+
| 1  | John | 111111111111 |
+----+------+--------------+
| 2  | Jane | 222222222222 |
+----+------+--------------+

来电记录 (Call)
+----+------+--------------+
| id | date | phone_number |
+----+------+--------------+
| 1  | 0945 | 111111111111 |
+----+------+--------------+
| 2  | 0950 | 222222222222 |
+----+------+--------------+
| 3  | 1045 | 333333333333 |
+----+------+--------------+</code>

전화번호가 전화번호부에 없는 개인의 통화 기록을 찾으려면 다음과 같은 여러 방법을 사용할 수 있습니다.

방법 1: 'NOT IN' 하위 쿼리 사용

<code class="language-sql">SELECT *
FROM Call
WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book)</code>

'Call' 테이블의 전화번호가 'Phone_book' 테이블에 나타나는지 직접 확인하는 쿼리입니다. 그렇지 않은 경우 해당 통화 기록을 선택하십시오.

방법 2: 'NOT EXISTS' 하위 쿼리 사용

<code class="language-sql">SELECT *
FROM Call
WHERE NOT EXISTS
(SELECT *
FROM Phone_book
WHERE Phone_book.phone_number = Call.phone_number)</code>

'NOT IN' 하위 쿼리와 유사하게 이 방법은 'NOT EXISTS' 하위 쿼리를 사용하여 'Phone_book' 테이블에 일치하는 전화번호가 있는지 확인합니다.

방법 3: 'LEFT OUTER JOIN' 사용

<code class="language-sql">SELECT * 
FROM Call
LEFT OUTER JOIN Phone_Book
ON (Call.phone_number = Phone_book.phone_number)
WHERE Phone_book.phone_number IS NULL</code>

이 방법은 'LEFT OUTER JOIN'을 사용하여 모든 수신 전화 기록을 검색한 다음 'Phone_book.phone_number' 열에서 NULL 값을 확인하여 'Phone_book' 테이블에서 일치하는 전화번호가 있는 기록을 필터링합니다.

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

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