Dapatkan Data Yang Hilang Menggunakan "SELECT * WHERE NOT EXISTS"
Masalah:
Kepada mendapatkan semula data daripada jadual di mana sel tertentu tidak terdapat dalam jadual lain, pengguna melaksanakan perkara berikut pertanyaan:
SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn)
Walau bagaimanapun, pertanyaan ini tidak mengembalikan hasil, walaupun diketahui kehilangan data.
Penyelesaian:
Untuk menangani isu itu, ia adalah perlu untuk menyertai dua jadual berdasarkan kunci biasa, seperti employeeID. Menggunakan NOT EXISTS tanpa cantuman akan sentiasa tidak menghasilkan hasil jika jadual kedua mengandungi sebarang data.
Pertanyaan yang betul, dengan mengandaikan employeeID ialah kunci pencantuman, ialah:
SELECT * FROM employees e WHERE NOT EXISTS ( SELECT null FROM eotm_dyn d WHERE d.employeeID = e.id )
Sebagai alternatif, a pendekatan yang kurang cekap ialah menggunakan LEFT JOIN dan menapis nilai NULL.
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan semula data yang hilang dengan betul menggunakan `SELECT * WHERE NOT EXISTS`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!