首頁 >資料庫 >mysql教程 >如何找出一個表中不存在於另一個表中的記錄?

如何找出一個表中不存在於另一個表中的記錄?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-22 18:47:11976瀏覽

How to Find Records in One Table That Don't Exist in Another?

如何找出一個表中不存在於另一個表中的記錄?

在關聯式資料庫中,您可能需要尋找一個表中不存在於另一個表中的記錄。一個常見的例子是識別那些電話號碼未在電話簿中註冊的個人的來電記錄。

考慮以下場景:

<code>电话簿 (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 |
+----+------+--------------+</code>

要查找電話號碼不在電話簿中的個人的來電記錄,您可以採用多種方法:

方法一:使用 'NOT IN' 子查詢

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

此查詢直接檢查 'Call' 表中的電話號碼是否出現在 'Phone_book' 表中。如果沒有,則選擇相應的來電記錄。

方法二:使用 '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>

與 'NOT IN' 子查詢類似,此方法使用 'NOT EXISTS' 子查詢來檢查 'Phone_book' 表中是否存在相符的電話號碼。

方法三:使用 '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>

此方法使用 'LEFT OUTER JOIN' 來檢索所有來電記錄,然後透過檢查 'Phone_book.phone_number' 列中的 NULL 值來過濾掉在 'Phone_book' 表中具有匹配電話號碼的記錄。

以上是如何找出一個表中不存在於另一個表中的記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn