如何在 MySQL 中创建秒列表
我有以下查询:
SELECT timestamp,
COUNT(*)
FROM table
GROUP BY timestamp
但有些时间戳没有显示,因为没有数据。这是一个示例
1:00:00 | 3
1:00:02 | 17
1:00:03 | 2
请注意,缺少 1:00:01。有没有办法让 1:00:01 |结果中出现0
?
I have the following query:
SELECT timestamp,
COUNT(*)
FROM table
GROUP BY timestamp
But some timestamps do not show up because there is no data. Here's an example
1:00:00 | 3
1:00:02 | 17
1:00:03 | 2
Notice that 1:00:01 is missing. Is there a way to make the 1:00:01 | 0
appear in the result?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
MySQL 没有递归功能,因此您只能使用 NUMBERS 表技巧 -
创建一个仅保存递增数字的表 - 使用 auto_increment 很容易做到:
使用以下方式填充表:
...您需要的任意数量的值。
使用DATE_ADD< /a> 构建时间列表,根据 NUMBERS.id 值增加秒数:
<前><代码>选择 x.*
FROM (SELECT DATE_FORMAT(DATE_ADD('2010-01-01', INTERVAL n.id - 1 SECOND), '%T')
来自数字 n) x
根据时间部分 LEFT JOIN 到数据表:
MySQL doesn't have recursive functionality, so you're left with using the NUMBERS table trick -
Create a table that only holds incrementing numbers - easy to do using an auto_increment:
Populate the table using:
...for as many values as you need.
Use DATE_ADD to construct a list of times, increasing the seconds based on the NUMBERS.id value:
LEFT JOIN onto your table of data based on the time portion: