语句分析:如果不存在某时段的数据,会显示为null,如何将不存在的时段自动补齐呢?
select a.lockdate,ifnull(b.count,0) as count
from (
SELECT 0 as lockdate
union all
SELECT 1 as lockdate
union all
SELECT 2 as lockdate
union all
SELECT 3 as lockdate
union all
SELECT 4 as lockdate
union all
SELECT 5 as lockdate
union all
SELECT 6 as lockdate
union all
SELECT 7 as lockdate
union all
SELECT 8 as lockdate
union all
SELECT 9 as lockdate
union all
SELECT 10 as lockdate
union all
SELECT 11 as lockdate
union all
SELECT 12 as lockdate
union all
SELECT 13 as lockdate
union all
SELECT 14 as lockdate
union all
SELECT 15 as lockdate
union all
SELECT 16 as lockdate
union all
SELECT 17 as lockdate
union all
SELECT 18 as lockdate
union all
SELECT 19 as lockdate
union all
SELECT 20 as lockdate
union all
SELECT 21 as lockdate
union all
SELECT 22 as lockdate
union all
SELECT 23 as lockdate
) a left join (
SELECT
HOUR (login_time) AS hours
FROM
tb_log_login
WHERE
DATE_FORMAT(login_time, '%Y-%m-%d') = DATE_FORMAT('2020-07-31', '%Y-%m-%d')
GROUP BY
hours
) b on a.lockdate = b.hours;
Done!