让我们考虑一下我有一个表“ Tab”,其中有一个列“ Col”
表“ Tab”具有此数据-
Col 1 2 3 4 5
如果我有一组值(2,3,6,7)。我可以通过查询来查询表和列表中存在的值
Select Col from Tab where col IN (2,3,6,7)
但是,如果我想返回列表中表中不存在的值,即在这种情况下仅为(6,7)。我应该使用什么查询?
我相信的问题是,您试图在陈述中寻找自己的价值。您需要做的是将in语句转换为表,然后可以确定哪些值不同。
create table #temp ( value int ) insert into #temp values 1 insert into #temp values 2 insert into #temp values 3 insert into #temp values 4 select id from #temp where not exists (select 1 from Tab where Col = id)
更好的选择是创建一个表值函数,以逗号分隔的字符串转换为表。我没有任何方便的代码,但是在Google上应该很容易找到。在这种情况下,您只需要使用以下语法。
select id from dbo.SplitStringToTable('2,3,6,7') where not exists (select 1 from Tab where Col = id)
希望这可以帮助