范围

时间:2016-12-16 00:34:41

标签: mysql

我目前有一个查询,查找之前发生的所有行(status=0):

SELECT id, COUNT(1) FROM tbl WHERE status = 0 AND date < UNIX_TIMESTAMP() GROUP BY id;

但是,现在我喜欢能够在另一边检索值 - 也就是说,我希望在和之前,作为两个不同的值。

除了简单地运行两个单独的查询之外,还有什么方法可以优化它吗?

2 个答案:

答案 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