我在列表中有一个返回值的查询。 例如:
SELECT *
FROM some_table
WHERE name IN ('name1', 'name2', 'name3', 'name4', 'name5', 'name6', 'name7', 'name8', 'name9', 'name10')
我想看看列表中可能没有的内容。 例如:
SELECT *
FROM #list
WHERE name NOT IN (SELECT name FROM some_table)
我的列表有几百个值。 如何将列表转换为表格?
SELECT 'name1', 'name2', 'name3', 'name4', 'name5', 'name6', 'name7', 'name8', 'name9', 'name10'
INTO #list UNPIVOT(?????)
答案 0 :(得分:0)
create table SomeTable ( -- The reference table
Name varchar(20));
insert SomeTable(Name)
values
('name1')
,('name2')
,('name3')
,('name4')
,('name5');
select T1.Name from
(values -- The list to compare to the reference table
('name1')
,('name2')
,('name129')) as T1(Name)
EXCEPT
select Name from SomeTable;
这将返回“name129”,因为该值在列表中但不在引用表中。使用NOT EXISTS
或使用外部联接可以实现相同的效果。
select T1.Name from
(values -- The list to compare to the reference table
('name1')
,('name2')
,('name129')) as T1(Name)
left outer join SomeTable as st
on st.Name = T1.Name
where st.Name is NULL;