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

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

DDD
發布: 2025-01-22 18:41:09
原創
819 人瀏覽過

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

SELECT *
FROM Call
WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book);
登入後複製

2。 子查詢:NOT EXISTS

這使用子查詢來檢查

中是否存在電話號碼。對於較大的 Phone_book 表,它通常比 NOT IN 更有效。 Phone_book

SELECT *
FROM Call
WHERE NOT EXISTS (
    SELECT *
    FROM Phone_book
    WHERE Phone_book.phone_number = Call.phone_number
);
登入後複製

3。 :LEFT OUTER JOIN

此方法使用

來比較電話號碼。 此查詢會傳回所有呼叫,但只有 LEFT OUTER JOIN 列中具有 NULL 值的呼叫代表未列出的號碼。 Phone_book

SELECT *
FROM Call
LEFT OUTER JOIN Phone_book
ON (Call.phone_number = Phone_book.phone_number)
WHERE Phone_book.phone_number IS NULL;
登入後複製

選擇最佳解:

最佳方法取決於資料庫的大小和結構。 對於大型資料集,通常首選

子查詢或 NOT EXISTS 以獲得更好的效能。 對於較小的資料集,LEFT OUTER JOIN 子句可能就足夠了。 考慮使用NOT IN來分析查詢執行計劃並選擇最有效的方法。 EXPLAIN

以上是如何找到電話簿資料庫中未列出的號碼的通話?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板