小编典典

查询:查找不属于值列表的行

sql

让我们考虑一下我有一个表“ 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)。我应该使用什么查询?


阅读 198

收藏
2021-05-16

共1个答案

小编典典

我相信的问题是,您试图在陈述中寻找自己的价值。您需要做的是将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)

希望这可以帮助

2021-05-16