如何实现反向“不在”?

时间:2016-07-02 10:09:39

标签: mysql sql select

我有一张包含一些数据的表格A:

name
------
a
b
d

我有一个名单('a', 'b', 'c', 'e')列表,我希望从中获取那些不在表中的值。我怎样才能做到这一点?我有哪些选择?这当然不起作用:

SELECT value FROM ('a', 'b', 'c', 'e') WHERE value NOT IN (SELECT name FROM A)

在此示例中,预期结果为:

value
------
c
e

2 个答案:

答案 0 :(得分:2)

您可以使用union构建临时表,然后加入

select tmp.name
from
(
  select 'a' as name
  union all 
  select 'b'
  union all 
  select 'c'
  union all 
  select 'e'
) tmp
left join your_table t on t.name = tmp.name
where t.name is null

如果您有多个值,我建议将这些值放入真实表中,然后加入它。

答案 1 :(得分:0)

转到下面给出的链接你将获得SPLIT功能,只需创建此功能它也将用于未来的开发。 How to split string and insert values into table in SQL Server

之后,执行以下查询。

SELECT * 
into #temp
FROM [dbo].Split('a,b,c,e', ',')

select * from #temp where item not in (select * from A)

drop table #temp