Saya ingin dapat dengan mudah memeriksa pengidentifikasi unik mana yang tidak ada dalam tabel, yang disediakan dalam kueri.
Untuk lebih menjelaskan, inilah yang akan saya lakukan sekarang, untuk memeriksa ID mana dari daftar "1, 2, 3, 4" yang tidak ada dalam tabel:
SELECT * FROM dbo."TABLE" WHERE "ID" IN ('1','2','3','4')
, katakanlah tabel tidak mengandung baris dengan ID 2.- Buang hasilnya ke Excel
- Jalankan VLOOKUP pada daftar asli yang mencari setiap nilai daftar dalam daftar hasil.
- VLOOKUP apa pun yang menghasilkan a
#N/A
adalah pada nilai yang tidak muncul dalam tabel.
Saya pikir pasti ada cara yang lebih baik untuk melakukan ini. Saya mencari, idealnya, untuk sesuatu seperti
Daftar untuk memeriksa -> Permintaan di atas meja untuk memeriksa -> Anggota daftar tidak di dalam tabel
sql-server
sql-server-2005
except
NReilingh
sumber
sumber
Jawaban:
Gunakan
EXCEPT
:Lihat SqlFiddle .
The
values
konstruktor hanya akan bekerja pada SQL Server 2008 atau lambat. Untuk tahun 2005, gunakansebagaimana dirinci dalam jawaban SO ini .
sumber
Incorrect syntax near the keyword 'values'.
ketika berlariSELECT * FROM (values ('search string'),('other string')) as T(ID)
Saya akan membuat variabel tabel atau tabel temp berisi ID yang Anda cari ... kemudian gunakan solusi Remus, minus gula sintaksis 2008:
sumber
Saya sekarang beberapa tahun lebih bijaksana (dan memiliki SQL Server yang lebih baru) daripada ketika saya mengajukan pertanyaan ini, jadi untuk merayakan lencana Pertanyaan Terkenal yang saya dapatkan karena menanyakan hal ini, inilah yang akan saya lakukan sekarang. (Saya pikir saya tidak pernah menggunakan
EXCEPT
operator sejak itu.)Saya akan mengatakan
LEFT JOIN
metode di bawah ini lebih berguna daripadaEXCEPT
karena Anda dapat menulisnya dengan gabungan lain tanpa perlu CTE.sumber