我遇到了这个问题,我无法想办法继续下去。所以,我有一个表,让我们说有3个具有相同id的条目和一个名为status
的列,第一个条目的值为active
,第二个条目的值为{{} 1}}和inactive
为最后一个。请记住,逻辑应该应用于连接,因为已经运行的查询非常大。
所以,如果没有状态paused
但是有一个状态active
,我想创建一个子查询来说明此ID是否至少有一个状态active
返回状态active
状态paused
返回状态paused
,否则返回状态inactive
。
我已尝试将IF()
与group_concat()
一起用于所有状态以及CASE
声明,但我没有得到所需的结果。
对此有何猜测? P.S:我正在使用MySQL 5.6
答案 0 :(得分:1)
您可以在此处使用条件聚合:
SELECT
id,
CASE WHEN SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) > 0
THEN 'active'
WHEN SUM(CASE WHEN status = 'paused' THEN 1 ELSE 0 END) > 0
THEN 'paused'
ELSE 'inactive' END AS status
FROM yourTable
GROUP BY id;