집 >데이터 베이스 >MySQL 튜토리얼 >해당 전화번호부 항목 없이 전화를 찾는 방법은 무엇입니까?
일치하지 않는 통화 기록 식별
이 가이드에서는 "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 중국어 웹사이트의 기타 관련 기사를 참조하세요!