简体   繁体   English

MySQL查询结果全天候

[英]MySql query result all hours of day

I need to get data for all hours of day, even if the count is 0. Right now it outputs: 即使计数为0,我也需要获取一天中所有小时的数据。现在它输出:

clicks--hour
 1----- 7
 2----- 13

My query right now: 我现在的查询:

SELECT count(*) as clicks, hour(time) as hour FROM clicks WHERE DATE(time) = DATE(NOW()) GROUP BY hour

Thank you for your time 感谢您的时间

#

Solved, managed to do it on my own, some how. 解决了,设法自己完成了,有些方法。

 SELECT h.Hour , COUNT(id) AS clicks FROM ( SELECT 0 AS Hour UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23) AS h LEFT OUTER JOIN clicks ON hour(time) = h.Hour AND DATE(time) = date(now()) GROUP BY h.Hour 

You can use the COALESCE This command helps in the case that a select returns null, to replace null with a value like this: 您可以使用COALESCE在select返回null的情况下,此命令可以用以下值替换null:

SELECT 
    COALESCE(count(*), 0) as clicks, 
    COALESCE(hour(time), hour(now())) as hour 
FROM 
    clicks 
WHERE DATE(time) = DATE(NOW()) GROUP BY hour

Hope that's what you're looking for. 希望这就是您想要的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM