我目前有一个查询,查找之前发生的所有行(status=0
):
SELECT id, COUNT(1) FROM tbl WHERE status = 0 AND date < UNIX_TIMESTAMP() GROUP BY id;
但是,现在我也喜欢能够在另一边检索值 - 也就是说,我希望在和之前,作为两个不同的值。
除了简单地运行两个单独的查询之外,还有什么方法可以优化它吗?
答案 0 :(得分:1)
date < UNIX_TIMESTAMP()
SUM
是一个布尔表达式,等于1或0.表达式的base64
等于它的真实次数或计数。
答案 1 :(得分:1)
您可以进行条件计数。
SELECT id,
COUNT(CASE WHEN date < UNIX_TIMESTAMP() THEN 1 ELSE null END ) ,
COUNT(CASE WHEN date > UNIX_TIMESTAMP() THEN 1 ELSE null END )
FROM tbl GROUP BY id