2016-08-03 102 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; 
相關問題