mysql - MySQL - 在 MySQL 中运行多个条件的计数
问题描述
我有一个看起来像这样的查询
SELECT * FROM table WHERE condition1 AND condition2 AND condition3...
它最多可以有 20 个条件。我想在每个条件之后获得表格的计数。更具体地说,我想知道
SELECT * FROM table WHERE condition1;
SELECT * FROM table WHERE condition1 AND condition2;
SELECT * FROM table WHERE condition1 AND condition2 AND condition3;
...
我能想到的一种方法是创建一堆临时表。然后下一个子查询将使用之前的临时表。它看起来像这样
CREATE TEMPORARY TABLE t1 (select * from table WHERE condition1);
CREATE TEMPORARY TABLE t2 (select * from t1 WHERE condition2);
CREATE TEMPORARY TABLE t3 (select * from t2 WHERE condition3);
...
然后我可以计算每个临时表。我想知道是否有更好的选择更快并且可能不需要创建一堆临时表。
解决方案
你可以试试下面的查询,如果这对你有用:
这将从所有条件中获取结果,然后我们可以根据所需条件使用CASE
SELECT SUM(CASE WHEN condition1 THEN 1 ELSE 0 END) AS count1,
SUM(CASE WHEN condition1 AND condition2 THEN 1 ELSE 0 END) AS count12,
SUM(CASE WHEN condition1 AND condition2 AND condition3 THEN 1 ELSE 0 END) AS count123,
FROM table
WHERE
condition1 OR condition2 OR condition3;
推荐阅读
- pandas - 如何从 jupyter 笔记本创建业务就绪报告?
- sql - DB2 i 7.3:编写循环(使用日期变量)从选择中插入值的存储过程
- mongodb - mongodb查询从关系集合中获取相关数据
- python - Jupyter Notebook 在爬取 API 时挂起
- .net - 如何在不影响原始var的情况下在字符串中查找特定字符
- ios - 从字典中填充 UITableView
- javascript - 我们如何在 chrome 扩展中要求 node_module?
- excel - Excel OFFSET 函数仅适用于可见单元格/公式以生成重复单元格的摘要标题
- elasticsearch - 如何在弹性搜索中使用必须或条件中的多个匹配短语?
- dockerhub - 由于镜像注册表不可用,Dockerhub 镜像拉取错误