Rumah > pangkalan data > tutorial mysql > Bagaimana untuk mencari rekod dalam satu jadual yang tidak wujud dalam jadual lain?

Bagaimana untuk mencari rekod dalam satu jadual yang tidak wujud dalam jadual lain?

Mary-Kate Olsen
Lepaskan: 2025-01-22 18:47:11
asal
1018 orang telah melayarinya

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

Bagaimana untuk mencari rekod dalam satu jadual yang tidak wujud dalam jadual lain?

Dalam pangkalan data hubungan, anda mungkin perlu mencari rekod dalam satu jadual yang tidak wujud dalam jadual lain. Contoh biasa ialah mengenal pasti rekod panggilan untuk individu yang nombor telefonnya tidak didaftarkan dalam buku telefon.

Pertimbangkan senario berikut:

<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>
Salin selepas log masuk

Untuk mencari rekod panggilan bagi individu yang nombor telefonnya tiada dalam buku telefon, anda boleh menggunakan beberapa kaedah:

Kaedah 1: Gunakan subquery 'NOT IN'

SELECT *
FROM Call
WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book)
Salin selepas log masuk

Pertanyaan ini secara langsung menyemak sama ada nombor telefon dalam jadual 'Panggil' muncul dalam jadual 'Buku_telefon'. Jika tidak, pilih rekod panggilan yang sepadan.

Kaedah 2: Gunakan subquery 'TIDAK WUJUD'

SELECT *
FROM Call
WHERE NOT EXISTS
(SELECT *
FROM Phone_book
WHERE Phone_book.phone_number = Call.phone_number)
Salin selepas log masuk

Sama seperti subquery 'NOT IN', kaedah ini menggunakan subquery 'NOT EXISTS' untuk menyemak sama ada nombor telefon yang sepadan wujud dalam jadual 'Phone_book'.

Kaedah 3: Gunakan 'LEFT OUTER JOIN'

SELECT * 
FROM Call
LEFT OUTER JOIN Phone_Book
ON (Call.phone_number = Phone_book.phone_number)
WHERE Phone_book.phone_number IS NULL
Salin selepas log masuk

Kaedah ini menggunakan 'LEFT OUTER JOIN' untuk mendapatkan semula semua rekod panggilan masuk dan kemudian menapis rekod dengan nombor telefon yang sepadan dalam jadual 'Phone_book' dengan menyemak nilai NULL ​​dalam lajur 'Phone_book.phone_number'.

Atas ialah kandungan terperinci Bagaimana untuk mencari rekod dalam satu jadual yang tidak wujud dalam jadual lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan