2017-01-23 5 views
1
 
TABLE 
id | result 
================== 
1 | SUCCESS 
2 | FAIL 
2 | SUCCESS 
3 | FAIL 
3 | FAIL 
3 | SUCCESS 
4 | FAIL 
5 | FAIL 
5 | FAIL 

少なくとも1つの「FAIL」と「SUCCESS」を持たないIDを選択したいと思います。この例では、id = 4とid = 5のみを選択する必要があります。MySQLでGROUP BYを使用して同じ列の2つの条件を持つ行を選択する最良の方法は何ですか?

このクエリは何の上に集約されていないHAVINGので、動作していないよう:

SELECT ID、結果をHAVING IDによる結果は= 'FAIL' グループテーブルからの結果= '成功'

! IN句を使用せずにどのようにこれを行うことができるか知っていますか?

答えて

3
SELECT 
    id 
    , sum(if(result='SUCCESS', 1, 0)) as cnt_succ 
    , sum(if(result='FAIL', 1, 0)) as cnt_fail 
FROM 
    table 
GROUP BY 
    id 
HAVING 
    cnt_fail>0 and cnt_succ=0 
関連する問題