作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 LOG 的表,在这个表中我有一个名为 Level 的列并且有 3 个可能的值:'INFO'、'WARNING'、'ERROR'。
我想对每个值进行计数,所以我的查询是
SELECT Level, COUNT(*) AS Count FROM LOG GROUP BY Level
我得到的结果是 'ERROR': X, 'INFO': Y, 'WARN': Z。
我有一个名为“Logger”的第二列,它可以接受很多值,例如“上传数据”。现在我只想为 Logger='Upload Data' 添加 WHERE 条件
SELECT Level, COUNT(*) AS Count FROM LOG WHERE Logger='Upload Data' GROUP BY Level
现在我得到的结果是 'ERROR': X, 'INFO': Y。
'WARN' 丢失
这是我的问题。
如何修改此查询以返回此结构“错误”:X,“信息”:Y,“警告”:0。
如果没有数据呢?
最佳答案
你可以使用UNION ALL
:
SELECT Level, SUM(`Count`) AS `Count`
FROM (
SELECT Level, COUNT(*) AS `Count` FROM LOG WHERE Logger='Upload Data' GROUP BY Level
UNION ALL
SELECT Level, 0 AS `Count` FROM LOG GROUP BY Level
) t
GROUP BY Level
关于mysql - 使用 'Group By' 和 'WHERE' 的 SQL 查询如果没有数据则返回所有计数为 0 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42292696/
我是一名优秀的程序员,十分优秀!