2017-06-20 72 views
1

我不確定正確的術語來正確描述此問題,因此我的搜索由於常見術語而產生了許多結果。sql匹配多行

我有一個表,看起來像這樣:

id status 
    1 finished 
    1 finished 
    1 finished 
    1 skipped 
    2 skipped 
    2 skipped 
    2 finished 
    2 finished 
    3 finished 
    3 skipped 
    3 finished 
    3 skipped 
    4 skipped 
    4 skipped 
    4 skipped 
    4 skipped 
    5 finished 
    5 finished 
    5 skipped 
    5 skipped 
    6 finished 
    6 finished 
    6 skipped 
    6 skipped 

我想從第一列(ID),如果在包含該ID的所有4行中的值具有返回的ID爲「跳過」,在第二列(狀態)。如果只有1或2或3包含跳過,則不感興趣。

因此,對於上面的表,結果將是:4

+1

你應該用你正在使用的數據庫標記問題。 –

回答

2

您可以使用group byhaving

select id 
from t 
group by id 
having min(status) = max(status) and min(status) = 'skipped'; 

不檢查了整整四排。如果這很重要,則將and count(*) = 4添加到having子句中。

+0

真的很好的解決方案。 –

+0

是的 - 非常優雅的解決方案。這很好。非常感謝你。 –