Mengenal pasti Pemanggil Tidak Diketahui: Teknik SQL untuk Nombor Tidak Berdaftar
Artikel ini menunjukkan cara mengenal pasti panggilan telefon daripada nombor yang tidak disenaraikan dalam pangkalan data buku telefon menggunakan pertanyaan SQL. Kami akan meneroka beberapa kaedah yang cekap untuk mencapai matlamat ini.
Senario:
Pertimbangkan jadual ini:
Jadual: Phone_book
id | name | phone_number |
---|---|---|
1 | John | 111111111111 |
2 | Jane | 222222222222 |
Jadual: Call
id | date | phone_number |
---|---|---|
1 | 0945 | 111111111111 |
2 | 0950 | 222222222222 |
3 | 1045 | 333333333333 |
Objektifnya adalah untuk mencari panggilan daripada nombor bukan dalam Phone_book
.
Penyelesaian Pertanyaan SQL:
Tiga kaedah dibentangkan di bawah:
Kaedah 1: NOT IN
Subkueri
Pendekatan ini menggunakan subkueri NOT IN
untuk menapis panggilan dengan nombor yang terdapat dalam Phone_book
:
<code class="language-sql">SELECT * FROM Call WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book);</code>
Kaedah 2: NOT EXISTS
Subkueri
Alternatif ini menggunakan NOT EXISTS
untuk mencapai hasil yang sama. Ia selalunya dianggap lebih cekap untuk set data yang besar:
<code class="language-sql">SELECT * FROM Call WHERE NOT EXISTS ( SELECT * FROM Phone_book WHERE Phone_book.phone_number = Call.phone_number );</code>
Kaedah 3: LEFT OUTER JOIN
dengan NULL
Semak
Kaedah ini menggunakan LEFT OUTER JOIN
dan menapis untuk nilai NULL
dalam lajur Phone_book
untuk mengenal pasti panggilan tanpa entri sepadan:
<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>
Hasil Jangkaan:
Ketiga-tiga pertanyaan akan menghasilkan output yang sama:
Jadual: Call
id | date | phone_number |
---|---|---|
3 | 1045 | 333333333333 |
Ini mengenal pasti panggilan daripada nombor yang tidak berdaftar dengan betul. Pilih kaedah yang paling sesuai dengan sistem pangkalan data dan saiz data anda.
Atas ialah kandungan terperinci Bagaimana Mengenalpasti Pemanggil Tidak Berdaftar Menggunakan Pertanyaan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!