首頁 >資料庫 >mysql教程 >如何找到電話簿資料庫中未列出的號碼的通話?

如何找到電話簿資料庫中未列出的號碼的通話?

DDD
DDD原創
2025-01-22 18:41:09773瀏覽

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

解決方法:

以下是實現此目的的三種有效方法:

1。 子句:NOT IN

此方法直接從

表中排除 Call 表中存在的電話號碼。 對於較小的Phone_book表來說它非常有效。 Phone_book

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

2。 子查詢:NOT EXISTS

這使用子查詢來檢查

中是否存在電話號碼。對於較大的 Phone_book 表,它通常比 NOT 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>

3。 :LEFT OUTER JOIN

此方法使用

來比較電話號碼。 此查詢會傳回所有呼叫,但只有 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