


Bagaimana untuk mencari alamat IP yang hilang di antara dua jadual?
Jan 23, 2025 pm 10:08 PMMencari Alamat IP yang Hilang: Perbandingan SQL
Senario:
Anda mempunyai dua jadual: login_log
dan ip_location
. Matlamatnya adalah untuk mengenal pasti semua alamat IP yang direkodkan dalam login_log
yang tidak hadir dalam ip_location
.
Penyelesaian SQL:
Beberapa pendekatan SQL boleh mencapai ini. Mari kita periksa tiga kaedah biasa:
-
NOT EXISTS
Subquery: Kaedah ini secara amnya cekap dan serasi secara meluas.SELECT ip FROM login_log WHERE NOT EXISTS ( SELECT 1 FROM ip_location WHERE login_log.ip = ip_location.ip );
Salin selepas log masukPertanyaan ini menyemak sama ada setiap alamat IP dalam
login_log
mempunyai entri yang sepadan dalamip_location
. Jika tiada padanan ditemui, alamat IP disertakan dalam keputusan. Ambil perhatian bahawaSELECT 1
selalunya lebih cekap daripadaSELECT ip
dalam subkueri. -
LEFT JOIN
denganNULL
Semak: Pendekatan ini menggunakanLEFT JOIN
untuk menggabungkan jadual, kemudian menapis baris dengan lajurip
dalamip_location
ialahNULL
, menunjukkan alamat IP hilang.SELECT l.ip FROM login_log l LEFT JOIN ip_location i ON l.ip = i.ip WHERE i.ip IS NULL;
Salin selepas log masuk -
EXCEPT
(atauMINUS
dalam sesetengah pangkalan data): Operasi berasaskan set ini mencari secara langsung perbezaan antara alamat IP dalam dua jadual. Ambil perhatian bahawa sintaks mungkin berbeza sedikit bergantung pada sistem pangkalan data khusus anda (cth.,MINUS
dalam Oracle).SELECT ip FROM login_log EXCEPT SELECT ip FROM ip_location;
Salin selepas log masuk
Pertimbangan Prestasi:
Kaedah optimum bergantung pada sistem pangkalan data anda, saiz jadual dan pengindeksan. NOT EXISTS
sering berprestasi baik dalam PostgreSQL, manakala LEFT JOIN
boleh menjadi cekap dalam sistem lain. EXCEPT
boleh ringkas tetapi mungkin tidak selalunya yang terpantas. Elakkan NOT IN
dengan subkueri, kerana ia boleh menjadi lebih perlahan, terutamanya dengan set data yang besar. Pengindeksan yang sesuai pada lajur ip
dalam kedua-dua jadual adalah penting untuk prestasi dalam semua kes.
Atas ialah kandungan terperinci Bagaimana untuk mencari alamat IP yang hilang di antara dua jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?
