我需要找到数据库中不存在WHERE IN子句中的哪些项。在下面的例子中cc33不存在,我需要查询来回馈cc33。 我该怎么做?
SELECT id FROM tblList WHERE field1 IN ('aa11','bb22','cc33')
答案 0 :(得分:4)
您需要将值放入表而不是列表中:
with list as (
select 'aa11' as val union all
select 'bb22' union all
select 'cc33'
)
select l.val
from list l left outer join
tbllist t
on l.val = t.field1
where t.field1 is null
答案 1 :(得分:3)
对于2008+的SQl-Server版本,您可以使用 Table Value Constructor:
SELECT field1
FROM
( VALUES
('aa11'),('bb22'),('cc33')
) AS x (field1)
WHERE field1 NOT IN
( SELECT field1 FROM tblList ) ;
进行测试