Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Cekap Mendapatkan Rekod Pekerja yang Hilang Menggunakan SQL?

Bagaimana untuk Cekap Mendapatkan Rekod Pekerja yang Hilang Menggunakan SQL?

Mary-Kate Olsen
Lepaskan: 2024-11-26 20:31:10
asal
677 orang telah melayarinya

How to Efficiently Retrieve Missing Employee Records Using SQL?

Mengambil Data Yang Hilang Menggunakan "SELECT * WHERE NOT EXISTS"

Pengguna berhasrat untuk mengekstrak semua rekod daripada jadual "pekerja" di mana khusus sel tidak wujud dalam jadual "eotm_dyn". Untuk mencapai matlamat ini, pengguna menggunakan pertanyaan berikut:

SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn)
Salin selepas log masuk

Walau bagaimanapun, pertanyaan ini secara konsisten tidak menghasilkan hasil walaupun mengetahui bahawa kira-kira 20 nama tiada.

Memahami Isu

Ralat terletak pada kegagalan untuk menyertai dua jadual dalam pertanyaan. Seperti sedia ada, pertanyaan hanya menilai kewujudan nama dalam jadual "eotm_dyn" tanpa merujuk jadual "pekerja". Ini akan sentiasa mengembalikan palsu melainkan jadual "eotm_dyn" kosong.

Penyelesaian: Menyertai Jadual

Untuk menyertai jadual dan menapis nama yang tiada, ubah suai pertanyaan seperti berikut:

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

Dalam pertanyaan yang diubah suai ini, LEFT JOIN secara tersirat dilakukan antara jadual "pekerja" dan "eotm_dyn" berdasarkan medan "employeeID" biasa. Klausa WHERE kemudiannya menggunakan NOT EXISTS untuk menapis sebarang rekod pekerja yang namanya (atau employeeID) tidak wujud dalam jadual "eotm_dyn".

Pendekatan Ganti: LEFT JOIN dan Menapis Nilai NULL

Sebagai alternatif, seseorang boleh menggunakan LEFT JOIN dan menapis nilai NULL seperti berikut:

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

Pendekatan ini mungkin kurang cekap berbanding menggunakan NOT EXISTS, tetapi ia menawarkan kaedah mudah untuk mendapatkan semula data yang hilang.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mendapatkan Rekod Pekerja yang Hilang Menggunakan SQL?. 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