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?
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>
Untuk mencari rekod panggilan bagi individu yang nombor telefonnya tiada dalam buku telefon, anda boleh menggunakan beberapa kaedah:
Kaedah 1: Gunakan subquery 'NOT IN'
<code class="language-sql">SELECT * FROM Call WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book)</code>
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'
<code class="language-sql">SELECT * FROM Call WHERE NOT EXISTS (SELECT * FROM Phone_book WHERE Phone_book.phone_number = Call.phone_number)</code>
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'
<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>
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!