Rumah >pangkalan data >tutorial mysql >Bagaimana Saya Boleh Menggunakan LEFT JOIN untuk Cari Rekod dalam Satu Jadual yang Tidak Wujud dalam Jadual Lain?
Gunakan LEFT JOIN untuk memilih rekod dalam satu jadual yang tidak wujud dalam jadual lain
Apabila bekerja dengan berbilang jadual dalam pangkalan data, menentukan rekod dalam satu jadual yang tidak wujud dalam jadual lain adalah tugas biasa. Artikel ini akan meneroka cara menggunakan pertanyaan SQL untuk menyelesaikan tugas ini.
Andaikan terdapat dua jadual, jadual1 dan jadual2, kedua-duanya mengandungi lajur bernama id dan nama. Matlamatnya adalah untuk memilih semua nama daripada jadual2 yang tidak muncul dalam jadual1.
Kaedah tradisional
Pertanyaan yang diberikan pada mulanya cuba memilih nama yang tiada dalam jadual1 terus daripada jadual2:
<code class="language-sql">SELECT name FROM table2 -- that are not in table1 already</code>
Walau bagaimanapun, pertanyaan ini bergantung pada fungsi pangkalan data tertentu yang mungkin tidak tersedia secara universal.
LEFT JOIN penyelesaian
Sebaliknya, kita boleh menggunakan LEFT JOIN untuk melakukan ini dengan cekap:
<code class="language-sql">SELECT t1.name FROM table1 t1 LEFT JOIN table2 t2 ON t2.name = t1.name WHERE t2.name IS NULL</code>
Penjelasan
Dalam pertanyaan ini, kami bergabung dengan jadual1 (disebut sebagai t1) dan jadual2 (disebut sebagai t2) dengan membandingkan lajur nama mereka. LEFT JOIN menyimpan semua baris dalam jadual1 dan mengembalikan baris yang sepadan dalam jadual2. Untuk baris dalam jadual1 yang tidak mempunyai baris yang sepadan dalam jadual2, baris yang sepadan dalam jadual2 akan menjadi NULL.
Akhir sekali, kami menggunakan klausa WHERE untuk memilih hanya baris dalam hasil yang mempunyai baris padanan NULL dalam jadual2. Ini memastikan bahawa kami hanya memilih nama dalam jadual2 yang tidak terdapat dalam jadual1.
Kelebihan kaedah LEFT JOIN
Kaedah LEFT JOIN mempunyai kelebihan berikut:
Atas ialah kandungan terperinci Bagaimana Saya Boleh Menggunakan LEFT JOIN untuk Cari Rekod dalam Satu Jadual yang Tidak Wujud dalam Jadual Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!