>데이터 베이스 >MySQL 튜토리얼 >해당 전화번호부 항목 없이 전화를 찾는 방법은 무엇입니까?

해당 전화번호부 항목 없이 전화를 찾는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-22 18:40:10732검색

How to Find Calls Without Corresponding Phone Book Entries?

일치하지 않는 통화 기록 식별

이 가이드에서는 "Phone_book" 테이블에 해당 항목이 없는 "Call" 테이블에서 통화 기록을 찾는 방법을 보여줍니다. 목표는 전화번호부에 나와 있지 않은 번호에서 걸려온 전화를 식별하는 것입니다. 이를 달성하기 위한 몇 가지 SQL 접근 방식을 살펴보겠습니다.

방법 1: NOT IN

사용

이 방법은 NOT IN 절을 사용하여 "Phone_book" 테이블에 있는 전화번호를 필터링합니다.

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

이 쿼리는 "Phone_book" 테이블의 phone_number 목록에서 phone_number을 찾을 수 없는 "Call" 테이블의 모든 열을 선택합니다.

방법 2: 채용 NOT EXISTS

이 접근 방식은 NOT EXISTS이 포함된 하위 쿼리를 활용하여 일치하는 전화번호가 없는지 확인합니다.

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

하위 쿼리는 일치하는 항목을 검색합니다. 일치하는 항목이 없으면(NOT EXISTS) 외부 쿼리에 레코드가 포함됩니다.

방법 3: 활용 LEFT OUTER JOIN

이 방법은 LEFT OUTER JOIN을 사용하여 두 테이블을 결합한 다음 "전화번호부" 테이블에서 null 값을 필터링합니다.

<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은 "Call" 테이블의 모든 행을 반환합니다. "Phone_book"에 일치하는 항목이 없으면 "Phone_book"의 해당 열은 NULL이 됩니다. WHERE 절은 일치하지 않는 행만 표시하도록 필터링합니다. 이 접근 방식은 특히 대규모 데이터 세트의 경우 성능 이점 때문에 선호되는 경우가 많습니다.

위 내용은 해당 전화번호부 항목 없이 전화를 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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