Rumah >pangkalan data >tutorial mysql >Bagaimana Mengenalpasti Pemanggil Tidak Berdaftar Menggunakan Pertanyaan SQL?

Bagaimana Mengenalpasti Pemanggil Tidak Berdaftar Menggunakan Pertanyaan SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-22 18:39:11685semak imbas

How to Identify Unregistered Callers Using SQL Queries?

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:

dengan cekap dengan cekap
<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!

Kenyataan:
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