Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memilih Rekod daripada Jadual2 Tidak Termasuk Mereka yang mempunyai Nama Padanan dalam Jadual1?

Bagaimana untuk Memilih Rekod daripada Jadual2 Tidak Termasuk Mereka yang mempunyai Nama Padanan dalam Jadual1?

Susan Sarandon
Lepaskan: 2025-01-19 16:46:15
asal
640 orang telah melayarinya

How to Select Records from Table2 Excluding Those with Matching Names in Table1?

Pilih daripada satu jadual untuk mengecualikan rekod daripada jadual lain

Soalan:

Memandangkan dua jadual, jadual1 mengandungi id dan nama lajur, jadual2 mengandungi id dan nama lajur, dapatkan semula semua baris dalam jadual2 yang nilai namanya tiada dalam jadual1.

Cadangan pertanyaan (salah):

SELECT name
FROM table2
-- that are not in table1 already
Salin selepas log masuk

Penyelesaian:

Pertanyaan yang lebih tepat untuk mendapatkan hasil yang diingini ialah:

SELECT t2.name
FROM table2 t2
LEFT JOIN table1 t1 ON t1.name = t2.name
WHERE t1.name IS NULL;
Salin selepas log masuk

Penjelasan:

Pertanyaan ini menggunakan gabungan kiri untuk memadankan setiap baris dalam jadual2 dengan baris yang sepadan dalam jadual1 berdasarkan lajur nama. Jika baris yang sepadan tidak ditemui dalam jadual1, nilai t1.name untuk baris tersebut dalam keputusan akan menjadi NULL. Dengan memilih hanya baris yang t1.name ialah NULL, kami secara berkesan mengecualikan rekod dalam jadual2 yang mempunyai nilai nama yang sepadan dalam jadual1. Sebagai alternatif, klausa NOT EXISTS boleh digunakan untuk mencapai hasil yang sama:

SELECT name
FROM table2 t2
WHERE NOT EXISTS (
    SELECT 1
    FROM table1 t1
    WHERE t1.name = t2.name
);
Salin selepas log masuk

Versi NOT EXISTS secara amnya lebih cekap daripada versi LEFT JOIN, terutamanya pada set data yang besar.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Rekod daripada Jadual2 Tidak Termasuk Mereka yang mempunyai Nama Padanan dalam Jadual1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan