mysql - 使用 group by 和多个“count”查询
问题描述
我有一个 MySQL 表,其中包含一些唯一代码,这些代码按名为tag
. 每个代码代表 MySQL 表中的一行,并有一个称为整数列used
(值为 0 或 1)。
我的目标是进行查询以列出所有标签以及该特定标签的代码总数、已使用代码数 ( used
= 1) 和未使用代码数 ( used
= 0)。
我可以使用以下查询从“代码”表中检索标签列表:
SELECT tag FROM codes WHERE user_id = ? GROUP BY tag;
最终结果将如下所示:
- tag1 : 使用 12 个代码,未使用 14 个代码,共 26 个代码
- tag2 : 使用 2 个代码,未使用 6 个代码,共 8 个代码
但我想知道我是否可以在一个查询中实现我的目标。你能在这一点上提供帮助吗?
谢谢!
解决方案
您可以使用条件聚合,例如
SELECT tag,
SUM(used = 1) AS used_codes,
SUM(used = 0) AS unused_codes,
COUNT(*) AS total_codes
FROM codes
WHERE user_id = ?
GROUP BY tag;
推荐阅读
- node.js - 如何在node.js中传递`hgetall`中的值
- php - 如果 ACF 中继器子字段为空,则隐藏 div 容器
- html - 如何在标签中设置图像样式?
- node.js - 快速会话:在选项卡/浏览器关闭时终止会话
- python - 使用 PANDAS 将两列合并并操作为日期
- docker - 安装证书后的 SSL_ERROR_BAD_CERT_DOMAIN
- python - 为什么 ScrollView 不能正常工作?
- javascript - 正则表达式验证空字段,只允许包含字符的空格
- python-3.x - 将 Python 输入参数传递给批处理文件
- java - 添加自定义过滤器 Apache Shiro + Spring Boot