下面的查询检索日期每小时并将数据分组为每小时格式
SELECT Hour(created) AS hour, created,image
FROM user_screenshot
WHERE created BETWEEN ( Curdate() + INTERVAL (SELECT Hour(Now())) hour -
INTERVAL 23 hour ) AND Now() AND date(created) = '2021-01-27'
GROUP BY hour
ORDER BY ( Curdate() + INTERVAL (SELECT Hour(Now())) hour - INTERVAL 23 hour )
没关系。但是是否可以检索属于该小时的所有记录。对于上面的示例,查询表示 447
小时内有 21
条记录,1
小时内有 22
条记录。是否有可能在一个查询中获取那些存在于数据库中的那些时间的结果。
以这种方式期望输出
答案 0 :(得分:0)
您可以在同一张表上使用 INNER JOIN 来做到这一点。
SELECT a.hour, a.Count, b.* FROM user_screenshot as b
INNER JOIN (
SELECT Hour(created) AS hour, created, COUNT(*) AS Count
FROM user_screenshot
WHERE created BETWEEN ( Curdate() + INTERVAL (SELECT Hour(Now())) hour - INTERVAL 23 hour ) AND Now()
GROUP BY hour
ORDER BY ( Curdate() + INTERVAL (SELECT Hour(Now())) hour - INTERVAL 23 hour )
) as a
ON Hour(a.created) = Hour(b.created) WHERE date(b.created) = '2021-01-27'
答案 1 :(得分:0)
是的,您可以使用 Group_concat()
函数将所有这些值作为单个数组获取。
示例。
Group_concat(column_name) as alias_name,
这将获取一行中的所有值