3

我需要查找数据库中不存在 WHERE IN 子句中的哪些项目。在下面的示例中 cc33 不存在,我需要查询以返回 cc33。我该怎么做?

SELECT id FROM tblList WHERE field1 IN ('aa11','bb22','cc33')
4

2 回答 2

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
于 2013-03-04T20:53:01.290 回答
3

对于 2008+ 的 SQl-Server 版本,您可以使用表值构造函数:

SELECT field1
FROM
  ( VALUES
     ('aa11'),('bb22'),('cc33')
  ) AS x (field1)
WHERE field1 NOT IN
      ( SELECT field1 FROM tblList ) ;

SQL-Fiddle测试

于 2013-03-04T20:54:59.440 回答