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 )
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
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!