>데이터 베이스 >MySQL 튜토리얼 >전화번호부 데이터베이스에 나열되지 않은 번호에서 걸려온 전화를 찾는 방법은 무엇입니까?

전화번호부 데이터베이스에 나열되지 않은 번호에서 걸려온 전화를 찾는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-22 18:41:09801검색

How to Find Calls from Numbers Not Listed in a Phone Book Database?

MySQL에서 목록에 없는 발신자 식별

이 기사에서는 전화번호부 데이터베이스에 나열되지 않은 전화번호에서 걸려온 전화를 식별하는 몇 가지 MySQL 기술을 보여줍니다. 샘플 데이터를 활용하여 문제를 분석하고 효율적인 솔루션을 제공해 드리겠습니다.

시나리오:

Phone_bookCall이라는 두 개의 테이블이 있습니다.

Phone_book 테이블:

<code>Phone_book
+----+------+--------------+
| id | name | phone_number |
+----+------+--------------+
| 1  | John | 111111111111 |
+----+------+--------------+
| 2  | Jane | 222222222222 |
+----+------+--------------+</code>

Call 테이블:

<code>Call
+----+------+--------------+
| id | date | phone_number |
+----+------+--------------+
| 1  | 0945 | 111111111111 |
+----+------+--------------+
| 2  | 0950 | 222222222222 |
+----+------+--------------+
| 3  | 1045 | 333333333333 |
+----+------+--------------+</code>

목표: 에서 전화번호가 Phone_book아닌

전화번호를 찾습니다.

솔루션 접근 방식:

이를 달성하기 위한 세 가지 효과적인 방법은 다음과 같습니다.

NOT IN1. 조항:

Call이 접근 방식은 Phone_book 테이블에 있는 전화번호를 Phone_book 테이블에서 직접 제외합니다. 작은

테이블에 효율적입니다.
<code class="language-sql">SELECT *
FROM Call
WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book);</code>

NOT EXISTS2. 하위 쿼리:

Phone_bookNOT IN에 전화번호가 있는지 확인하기 위해 하위 쿼리를 사용합니다. 일반적으로 더 큰 Phone_book 테이블의 경우

보다 효율적입니다.
<code class="language-sql">SELECT *
FROM Call
WHERE NOT EXISTS (
    SELECT *
    FROM Phone_book
    WHERE Phone_book.phone_number = Call.phone_number
);</code>

LEFT OUTER JOIN3. :

LEFT OUTER JOIN이 방법은 NULL을 사용하여 전화번호를 비교합니다. 쿼리는 모든 통화를 반환하지만 Phone_book 열에

값이 있는 통화만 비공개 번호를 나타냅니다.
<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>

최상의 솔루션 선택:

NOT EXISTS최적의 접근 방식은 데이터베이스의 크기와 구조에 따라 다릅니다. 대규모 데이터 세트의 경우 일반적으로 더 나은 성능을 위해 LEFT OUTER JOIN 하위 쿼리 또는 NOT IN가 선호됩니다. 더 작은 데이터 세트의 경우 EXPLAIN 절로 충분할 수 있습니다. 쿼리 실행 계획을 분석하고 가장 효율적인 방법을 선택하려면

을 사용해 보세요.

위 내용은 전화번호부 데이터베이스에 나열되지 않은 번호에서 걸려온 전화를 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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