Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Nilai Berbeza daripada Satu Jadual yang Tidak Wujud dalam Jadual Lain?
Mengekstrak Rekod Unik Tidak Ditemui dalam Jadual Lain: Panduan Terperinci
Tugas pangkalan data yang kerap melibatkan pengambilan entri unik daripada satu jadual yang tiada dalam jadual lain. Mari kita ilustrasikan dengan contoh:
<code>table1 (id, name) table2 (id, name)</code>
Matlamat kami adalah untuk memilih data daripada table2
yang tidak muncul dalam table1
. Pendekatan naif mungkin kelihatan seperti ini:
<code>SELECT name FROM table2 -- excluding those in table1</code>
Ini tidak mencukupi; kaedah yang lebih canggih diperlukan untuk mengenal pasti rekod tidak sepadan yang berbeza dengan tepat.
Penyelesaian Berkesan: TINGGALKAN SERTAI dan ADALAH NULL
Pertanyaan berikut menggunakan LEFT JOIN
untuk memautkan baris daripada table1
dan table2
berdasarkan lajur name
. Keadaan IS NULL
kemudian menapis keluar mana-mana pasangan yang sepadan:
<code>SELECT t1.name FROM table1 t1 LEFT JOIN table2 t2 ON t2.name = t1.name WHERE t2.name IS NULL</code>
Pecahan Terperinci:
Pertanyaan berfungsi seperti berikut:
table1
dan cuba untuk menyertainya dengan entri yang sepadan dalam table2
.WHERE
mengenal pasti baris dengan lajur table2.name
ialah NULL
. Nilai NULL
menandakan bahawa baris table1
masing-masing tidak mempunyai padanan dalam table2
.name
daripada hasil carian, dijamin wujud dalam table1
untuk semua baris yang dipilih.Nota Penting:
Walaupun secara amnya cekap dan serasi merentas pelbagai sistem pangkalan data yang menyokong ANSI 92 SQL, pendekatan ini mungkin tidak selalunya yang terpantas. Alternatif, seperti menggunakan operator NOT IN
, boleh menawarkan prestasi yang lebih baik dalam situasi tertentu.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Nilai Berbeza daripada Satu Jadual yang Tidak Wujud dalam Jadual Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!