我一直在试图在MySQL 5.7中没有任何运气来查询和分组当天一小时的一堆测试记录,需要注意的是我想要几小时没有记录显示0,现在它们从结果
我用小时0-23创建了一个小时表。
> SELECT h.hour, COUNT(h.id) FROM hours h LEFT OUTER JOIN
> test_result_detail td ON (h.hour = HOUR(td.date_time)) AND
> td.date_added = '2017-03-10' JOIN seq_test_set station ON
> td.station_id = station.id AND station.station = 'TS-5026' WHERE
> h.hour <= 13 GROUP BY 1;
期望的结果:
1 0
2 0
3 0
4 0
5 0
6 5
7 32
8 29
9 22
10 24
11 15
12 14
13 7
答案 0 :(得分:1)
我认为您的第二个JOIN
应该只是LEFT JOIN
而COUNT()
需要LEFT JOIN
ed表中的列。
SELECT h.hour, COUNT(station.id)
FROM hours h LEFT OUTER JOIN
test_result_detail td
ON h.hour = HOUR(td.date_time) AND
td.date_added = '2017-03-10' LEFT JOIN
seq_test_set station
ON td.station_id = station.id AND
station.station = 'TS-5026'
WHERE h.hour <= 13
GROUP BY h.hour;