2016-08-03 60 views
1

我想找到没有序列中的特定值的记录:检查记录的序列包含一个特定值

客户表:

enter image description here

举例来说,我需要找到所有没有“F值”的客户。

SELECT * FROM Customer 
WHERE VALUE NOT IN 'Value F' 

也将返回值A,B,C等

+0

选择从客户*其中值= '值F' – Danimal

回答

1
SELECT * 
FROM Customer c 
WHERE NOT EXISTS (SELECT 1 
        FROM Customer c2 
        WHERE c2.CustomerID = c.CustomerID 
          AND VALUE = 'Value F') 

NOT EXISTS可以在这里使用。

你的NOT IN语句需要看起来像这样。

SELECT * 
FROM Customer 
WHERE CustomerId NOT IN (SELECT CustomerID 
          FROM  Customer 
          WHERE VALUE = 'Value F') 
+0

不鼓励'NOT IN子qeury' ......(太多的程序员有!被它的NULL行为所愚弄。) – jarlh

+0

这是完美的。谢谢 – Buca

1

使用group byhaving

select customerid 
from customers 
group by customerid 
having sum(case when value = 'Value F' then 1 else 0 end) = 0; 
相关问题