Sql-Server
辨識哪些值與表行不匹配
我希望能夠輕鬆檢查查詢中提供的那些唯一標識符在表中不存在。
為了更好地解釋,這就是我現在要做的,檢查表中不存在列表“1、2、3、4”的哪些 ID:
SELECT * FROM dbo."TABLE" WHERE "ID" IN ('1','2','3','4')
,假設該表不包含 ID 為 2 的行。- 將結果轉儲到 Excel
- 在搜尋結果列表中的每個列表值的原始列表上執行 VLOOKUP。
- 任何導致 的 VLOOKUP 都
#N/A
位於表中未出現的值上。我認為必須有更好的方法來做到這一點。理想情況下,我正在尋找類似的東西
要檢查的列表 -> 查詢要檢查的表 -> 列表中的成員不在表中
使用
EXCEPT
:SELECT * FROM (values (1),(2),(3),(4)) as T(ID) EXCEPT SELECT ID FROM [TABLE];
請參閱SqlFiddle。
構造
values
函式僅適用於 SQL Server 2008 或更高版本。對於 2005 年,使用SELECT 'value' UNION SELECT 'value'
如this SO answer中所述。
我會建立一個包含您正在搜尋的 ID 的表變數或臨時表……然後使用 Remus 的解決方案,減去 2008 年的語法糖:
declare @t table (ID int) insert into @t values (1) insert into @t values (2) insert into @t values (3) insert into @t values (4) insert into @t values (5) select ID from @t except select ID from [Table];