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。
这个查询似乎不起作用,因为 HAVING 没有聚合任何东西:
SELECT id, result FROM table WHERE result = 'FAIL' GROUP BY id HAVING 结果!= '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
关于mysql - 在 MySQL 中使用 GROUP BY 选择具有同一列的两个条件的行的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41811131/