2017-06-20 62 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

是的 - 非常优雅的解决方案。这很好。非常感谢你。 –