Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Rekod daripada Satu Jadual yang Tidak Wujud dalam Jadual Lain?

Bagaimana untuk Memilih Rekod daripada Satu Jadual yang Tidak Wujud dalam Jadual Lain?

DDD
DDDasal
2025-01-19 16:27:09425semak imbas

How to Select Records from One Table That Don't Exist in Another?

Mengenal pasti Rekod Hilang Merentas Jadual Pangkalan Data

Pertanyaan pangkalan data selalunya memerlukan mendapatkan semula data daripada satu jadual yang tidak mempunyai entri sepadan dalam jadual lain. Mari kita gambarkan ini dengan contoh:

Senario:

Kami mempunyai dua jadual, 'table1' dan 'table2', dengan struktur berikut:

<code>table1 (id, name)
table2 (id, name)</code>

Objektif:

Matlamat kami adalah untuk mengekstrak nilai 'nama' daripada 'table2' yang tiada dalam 'table1'.

Pendekatan naif mungkin:

<code>SELECT name
FROM table2
-- where name is not in table1</code>

Malangnya, pertanyaan SQL ini tidak lengkap dan tidak akan menghasilkan hasil yang diharapkan.

Penyelesaian Berkesan:

Pendekatan yang betul melibatkan penggunaan LEFT JOIN:

<code class="language-sql">SELECT t2.name
FROM table2 t2
LEFT JOIN table1 t1 ON t1.name = t2.name
WHERE t1.name IS NULL;</code>

Penjelasan:

  • LEFT JOIN: Ini memastikan semua baris daripada 'table2' disertakan dalam set hasil, tanpa mengira baris yang sepadan dalam 'table1'.
  • WHERE Fasal: Syarat WHERE t1.name IS NULL menapis keputusan, mengekalkan hanya baris tersebut daripada 'table2' yang tiada 'nama' yang sepadan dalam 'table1'.
  • Pemilihan Medan: Pertanyaan memilih lajur 'nama' daripada 'jadual2', kerana ini adalah satu-satunya medan yang dijamin wujud daripada jadual itu dalam hasil akhir.

Teknik LEFT JOIN ini serasi secara meluas merentas pelbagai sistem pangkalan data, menawarkan kaedah yang mantap untuk mengenal pasti rekod yang hilang antara jadual.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Rekod daripada Satu Jadual yang Tidak Wujud dalam Jadual Lain?. 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