【发布时间】:2020-09-29 18:49:11
【问题描述】:
我有一个包含大约 100.000 行的表,其结构如下:
+------+---------------------+-----------+
| id | timestamp | eventType |
+------+---------------------+-----------+
| 12 | 2015-07-01 16:45:47 | 3001 |
| 103 | 2015-07-10 19:30:14 | 3001 |
| 1174 | 2015-09-03 12:57:08 | 3001 |
+------+---------------------+-----------+
对于每一行,我想计算这一行和上一行的时间戳之间的天数。 如您所见,id 不是连续的,该表包含不同的事件,我只想比较一个特定事件随时间变化的时间戳。
我知道,对于两个数据的比较,可以使用 DATEDIFF,我将使用查询定义两行,该查询通过特定 id 选择行。 但由于我有很多 1000 行,我正在寻找一种方法来以某种方式遍历整个表。
不幸的是,我的 sql 知识有限,搜索并没有找到与我的问题足够接近的示例,因此我将继续从那里开始。 我会非常感谢任何提示。
【问题讨论】:
-
哪个版本的 MySQL? This is a lot easier in MySQL 8.
-
在服务器上我有一个 mysql 5.7.31,但我可以将表转储到我的计算机上,以便在我有 mysql 8.0.13 的地方进行分析。所以这两种解决方案都与我相关。
标签: mysql sql datetime subquery window-functions