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

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

我遇到了这个问题,但我想不出继续下去的方法。所以,我有一个表,假设有 3 个具有相同 ID 的条目和一个名为 status 的列,第一个条目的值为 active,第二个条目的值为最后是 inactivepaused。请记住,逻辑应该应用在联接中,因为已经运行的查询非常大。

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

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

有什么猜测吗? P.S: 我使用的是 MySQL 5.6

最佳答案

你可以在这里使用条件聚合:

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;

关于mysql - 使用 IF 或 Case 在 MySQL 列中应用逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48944936/

相关文章:

php - 如何获取左连接 mySQL 表的 id?

MySQL SELECT JOIN ON 3 个表 "continue"查询,如果 1 个连接不返回任何内容

sql - IN 子查询的 WHERE 条件影响主查询——这是一个特性还是一个错误?

grails - hasMany列上的gorm过滤器

php - 检查 while 循环键是否存在于单独的数组中

mysql - Sphinx 仅返回完全匹配的内容

arrays - 我可以使用 Arduino 超声波传感器在处理移动/播放时制作图像序列吗?

PHP、MySQL 选择所有 if

excel - 变量属于一个值范围

sql - SQL Server 中带有子查询的 CASE 语句