mysql 分组时根据优先级显示
需要实现的是,分组前每种场景有多种颜色(红色,黄色,蓝色)
优先级为 红>黄>蓝
比如 下面:食材保鲜’在众多蓝色中有一个黄色,希望实现分组后‘食材保鲜’显示的是黄色
期望结果
回答
我的理解是,按场景名称和食堂名称分组,如果有多个蓝色则认为其是黄色,最终显示还是按场景名称和食堂名称分组,每组只显示优先级最高的那个颜色
SELECT 场景名称,食堂名称,CASE WHEN 优先级=3 THEN '红色' WHEN 优先级=2 THEN '黄色' ELSE '蓝色' END AS 显示颜色
FROM
(
SELECT 场景名称,食堂名称,MAX(优先级) AS 优先级
FROM
(
SELECT 场景名称,食堂名称,显示颜色,
CASE WHEN 显示颜色='红色' THEN 3 WHEN 显示颜色='黄色' THEN 2 ELSE 1 END AS 优先级
FROM
(
SELECT 场景名称,食堂名称,
CASE WHEN 显示颜色='蓝色' AND 颜色数量>1 THEN '黄色' ELSE 显示颜色 END AS 显示颜色
FROM
(
SELECT 场景名称,食堂名称,显示颜色,COUNT(1) AS 颜色数量
FROM 食堂
GROUP BY 场景名称,食堂名称,显示颜色
) AS T1
) AS T2
) AS T3
GROUP BY 场景名称,食堂名称
) AS T4
ORDER BY 场景名称,食堂名称,显示颜色
以上是 mysql 分组时根据优先级显示 的全部内容, 来源链接: utcz.com/a/40850.html