Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencari Rekod Hilang Dengan Cekap Menggunakan SQL `TIDAK WUJUD`?

Bagaimana untuk Mencari Rekod Hilang Dengan Cekap Menggunakan SQL `TIDAK WUJUD`?

Patricia Arquette
Lepaskan: 2024-12-10 09:52:10
asal
962 orang telah melayarinya

How to Efficiently Find Missing Records Using SQL's `NOT EXISTS`?

PILIH * MANA TIDAK WUJUD: Mencari Rekod Hilang

Pertanyaan SQL "SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn) " bertujuan untuk mendapatkan semula semua baris daripada jadual "pekerja" di mana nama mereka tidak terdapat dalam jadual "eotm_dyn". Walau bagaimanapun, pertanyaan ini tidak lengkap dan tidak akan mengembalikan hasil.

Untuk melengkapkan pertanyaan, adalah perlu untuk menyertai dua jadual pada medan biasa, biasanya medan pengecam unik. Dengan mengandaikan jadual dicantumkan pada medan "employeeID", pertanyaan yang diperbetulkan menjadi:

SELECT *
FROM employees e
WHERE NOT EXISTS
(
    SELECT null
    FROM eotm_dyn d
    WHERE d.employeeID = e.id
)
Salin selepas log masuk

Subquery "NOT EXISTS" menyemak ketiadaan sebarang baris dalam jadual "eotm_dyn" di mana "employeeID" sepadan dengan "id" baris semasa dalam jadual "pekerja". Jika tiada baris sedemikian wujud, pertanyaan luar akan mengembalikan keseluruhan baris daripada jadual "pekerja". Pendekatan ini memastikan bahawa hanya pekerja tanpa entri dalam jadual "eotm_dyn" dipilih.

Sebagai alternatif, pertanyaan boleh ditulis menggunakan LEFT JOIN dengan penapis seterusnya untuk nilai NULL:

SELECT *
FROM employees e
LEFT JOIN eotm_dyn d
ON e.id = d.employeeID
WHERE d.name IS NULL
Salin selepas log masuk

Walau bagaimanapun, kaedah ini mungkin kurang cekap berbanding menggunakan subkueri NOT EXISTS, terutamanya untuk pangkalan data yang besar.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Rekod Hilang Dengan Cekap Menggunakan SQL `TIDAK WUJUD`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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