我用SUM()
以下方式计算具有多个条件的行
SELECT date(time),
SUM(CASE WHEN crit1 = 1 AND crit2 NOT LIKE CONCAT('%',table1.id,'%') THEN 1 ELSE 0 END)
FROM table1, table2
GROUP BY date(time)
但是我注意到的是,被计数的项目数是table1
. 因此,如果有 100 个项目符合crit1
和crit2
标准,并且 中有 5 个项目table1
,那么它会给我 500 个项目的总和。我从 table1 添加和删除了项目,它按比例影响了 SUM 子句,以验证这一点。
如何在不重复计算 CONCAT 中的每个案例的情况下将其相加,或者可能是一种更好的计算方式?
数据结构:
table1 table2
id name time crit1 crit2
123 A 2013-05-15 05:00:00 1 456
234 B 2013-05-15 05:00:00 2 789
345 C 2013-05-15 05:00:00 1 678
注意:ID 是唯一的
期望的输出:
2013-05-15 2