2017-07-20 142 views
3

我有一個名稱和位列的表,指示名稱是否被刪除(1)或不是(0)。我試圖編寫一個查詢來返回所有被刪除的名字,除非這個名字也沒有被刪除(一個名字可能會在表格中出現多次)。希望是有道理的!sql - 查詢多行

下面是一些示例數據:

+------+-------+ 
|Name |Deleted| 
+------+-------+ 
|Bob | 1 | 
+------+-------+ 
|Joe | 1 | 
+------+-------+ 
|Joe | 0 | 
+------+-------+ 
|Bob | 1 | 
+------+-------+ 
|Sam | 1 | 
+------+-------+ 

所以,結果將是BobSam
兩個 '鮑勃' 條目 '1'。
單個Sam條目爲'1'。

喬不會在結果中,因爲他既是'1'也是'0'。

感謝您的幫助!

回答

3

一種方法是使用聚合:

select name 
from t 
group by name 
having min(deleted) = 1; 
+0

聰明!我喜歡 – n8wrl

1
SELECT T.Name 
    FROM Table T 
WHERE T.Deleted = 1 
    AND NOT EXISTS (SELECT * 
        FROM Table T2 
        WHERE T2.Name = T.Name 
         AND T2.Deleted = 0)