在 MySQL 中使用 GROUP BY 对同一列具有两个条件的 select 行的最佳方法是什么?

What is the best way to select rows with two conditions of the same column using GROUP BY in MySQL?

TABLE
id   |   result
==================
1    |   SUCCESS
2    |   FAIL
2    |   SUCCESS
3    |   FAIL
3    |   FAIL
3    |   SUCCESS
4    |   FAIL
5    |   FAIL
5    |   FAIL

我想要 select 那些至少有一个 'FAIL' 而没有 'SUCCESS' 的 ID。在这个例子中,只有 id = 4 和 id = 5 应该 selected.

这个查询似乎不起作用,因为 HAVING 没有聚合任何东西:

SELECT id, 结果来自 table WHERE result = 'FAIL' GROUP BY id HAVING result != 'SUCCESS'

有谁知道如何在不使用 IN 子句的情况下做到这一点?

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