Saya pikir saya akan mengambil jalan yang benar dengan yang satu ini ... Mohon bersabarlah karena SQL saya bukanlah yang terbaik
Saya mencoba membuat kueri database untuk memilih semuanya dari satu tabel di mana sel tertentu tidak ada di yang lain. Itu tidak terlalu masuk akal tapi saya berharap kode ini akan masuk akal
SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn)
Jadi pada dasarnya saya memiliki satu tabel dengan daftar karyawan dan detailnya. Kemudian tabel lain dengan beberapa detail lainnya, termasuk namanya. Jika tidak ada nama di tabel eotm_dyn, artinya tidak ada entri untuk mereka, saya ingin melihat dengan tepat siapa mereka, atau dengan kata lain, melihat apa yang sebenarnya hilang.
Kueri di atas tidak mengembalikan apa-apa, tetapi saya tahu ada 20 nama yang hilang jadi saya jelas tidak melakukannya dengan benar.
Adakah yang bisa membantu?
group by X having exist [row with employeeID = e.id]
ATAU
ATAU
sumber
NOT IN
tidak berfungsi seperti yang diharapkan jikaname
memilikinull
nilai. Tonton dari 36 menit 20 detik dalam video SESI: 10 Teknik Tuning Kueri Yang Harus Diketahui Setiap Pemrogram SQL (Kevin Kline, Aaron Bertrand) .Anda dapat melakukan LEFT JOIN dan menegaskan kolom yang digabungkan adalah NULL.
Contoh:
sumber
Tidak pernah mengembalikan catatan apa pun kecuali
eotm_dyn
kosong. Anda perlu beberapa jenis kriteria tentangSELECT name FROM eotm_dyn
sukadengan asumsi bahwa dua tabel ditautkan oleh hubungan kunci asing. Pada titik ini Anda dapat menggunakan berbagai opsi lain termasuk LEFT JOIN. Namun, pengoptimal biasanya akan menanganinya dengan cara yang sama.
sumber
Anda juga dapat melihat pertanyaan terkait ini . Pengguna tersebut melaporkan bahwa menggunakan gabungan memberikan kinerja yang lebih baik daripada menggunakan sub kueri.
sumber