使用IF或Case在MySQL列中应用逻辑

时间:2018-02-23 09:40:07

标签: mysql if-statement subquery left-join mysql-5.6

我遇到了这个问题,我无法想办法继续下去。所以,我有一个表,让我们说有3个具有相同id的条目和一个名为status的列,第一个条目的值为active,第二个条目的值为{{} 1}}和inactive为最后一个。请记住,逻辑应该应用于连接,因为已经运行的查询非常大。

所以,如果没有状态paused但是有一个状态active,我想创建一个子查询来说明此ID是否至少有一个状态active返回状态active状态paused返回状态paused,否则返回状态inactive

我已尝试将IF()group_concat()一起用于所有状态以及CASE声明,但我没有得到所需的结果。

对此有何猜测? P.S:我正在使用MySQL 5.6

1 个答案:

答案 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;