首页 > 解决方案 > 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);
...

然后我可以计算每个临时表。我想知道是否有更好的选择更快并且可能不需要创建一堆临时表。

标签: mysql

解决方案


你可以试试下面的查询,如果这对你有用:

这将从所有条件中获取结果,然后我们可以根据所需条件使用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;

推荐阅读