辨識未知來電者:未註冊號碼的 SQL 技術
本文示範如何使用 SQL 查詢識別電話簿資料庫中未列出的號碼的電話。 我們將探索幾種有效的方法來實現這一目標。
場景:
考慮這些表格:
表:Phone_book
id | name | phone_number |
---|---|---|
1 | John | 111111111111 |
2 | Jane | 222222222222 |
表:Call
id | date | phone_number |
---|---|---|
1 | 0945 | 111111111111 |
2 | 0950 | 222222222222 |
3 | 1045 | 333333333333 |
目標是尋找來自號碼的來電,而不是中的Phone_book
。
SQL 查詢解決方案:
以下介紹三種方法:
方法一: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>
方法2:NOT EXISTS
子查詢
此替代方案使用 NOT EXISTS
來實現相同的結果。 它通常被認為對於大型資料集更有效:
<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
與NULL
檢查
此方法使用 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>
預期結果:
所有三個查詢將產生相同的輸出:
表:Call
id | date | phone_number |
---|---|---|
3 | 1045 | 333333333333 |
這可以正確識別來自未註冊號碼的通話。 選擇最適合您的資料庫系統和資料大小的方法。
以上是如何使用 SQL 查詢識別未註冊的呼叫者?的詳細內容。更多資訊請關注PHP中文網其他相關文章!