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

我想选择那些至少有一个'FAIL'和'SUCCESS'的ID。在这个例子中,只应选择id = 4和id = 5。在MySQL中使用GROUP BY选择具有两个相同列条件的行的最佳方式是什么?

该查询似乎并没有因为具有工作不超过聚合东西:

SELECT ID,导致FROM表WHERE结果= '失败' GROUP BY ID HAVING结果= '成功'

!有谁知道如何在不使用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 
相关问题