在SQL查询中的WHERE

时间:2013-03-04 20:51:03

标签: sql sql-server

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

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

2 个答案:

答案 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 ) ;

SQL-Fiddle

进行测试