找出未知號碼的通話記錄
我們的資料庫包括兩個表格:「Phone_book」(包含姓名和電話號碼)和「Call」(包含通話記錄)。 目標是找出來自「Phone_book」表中未列出的號碼的通話。
解:
幾個 SQL 查詢可以完成此操作;效率取決於資料庫最佳化和表格大小。
方法1(不適用):
這個簡單的查詢對於較小的「Phone_book」表非常有效:
<code class="language-sql">SELECT * FROM Call WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book);</code>
方法 2(不存在):
另一種方法,通常首選用於較大資料集的效能:
<code class="language-sql">SELECT * FROM Call WHERE NOT EXISTS ( SELECT 1 FROM Phone_book WHERE Phone_book.phone_number = Call.phone_number );</code>
方法 3(左外連接):
使用 LEFT OUTER JOIN
的第三個選項:
<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>
重要提示:為了獲得最佳效能,請將 SELECT *
替換為「Call」表中所需的特定欄位的清單。 這減少了資料檢索並提高了查詢速度。
以上是如何識別來自連結資料庫中未列出的電話號碼的呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!