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

iは、そのIDを含むすべての4行の値が第二に「スキップ」している場合、最初の列(ID)から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'; 

これは正確に4つの行をチェックしません。それが重要な場合は、having句にand count(*) = 4を追加します。

+0

本当に素晴らしいソリューションです。 –

+0

ええ - 非常にエレガントなソリューション。これはうまくいく。どうもありがとうございました。 –

関連する問題