gpt4 book ai didi

MySQL:如何为具有接近时间戳的记录分配相同的ID

转载 作者:行者123 更新时间:2023-11-29 06:56:48 26 4
gpt4 key购买 nike

我有一个带有时间戳列 t 的 MySQL 表。我需要创建另一个整数列(groupId),它对于带有时间戳的记录具有相同的值 相差不到 3 秒。我的 MySQL 版本不支持窗口函数。这是第二列的预期输出:

+---------------------+--------+
| t | groupId|
+---------------------+--------+
| 2017-06-17 18:15:13 | 1 |
| 2017-06-17 18:15:14 | 1 |
| 2017-06-17 20:30:06 | 2 |
| 2017-06-17 20:30:07 | 2 |
| 2017-06-17 22:44:58 | 3 |
| 2017-06-17 22:44:59 | 3 |
| 2017-06-17 23:59:50 | 4 |
| 2017-06-17 23:59:51 | 4 |

我尝试使用自连接和 TIMESTAMPDIFF(SECOND,t1,t2) <3

但我不知道如何生成唯一的groupId。

附言数据的性质保证了不存在超过 3 秒的连续范围

最佳答案

您可以使用变量来做到这一点。

select tm 
,@diff:=timestampdiff(second,@prev,tm)
,@prev:=tm
,@grp:=case when @diff<3 or @diff is null then @grp else @grp+1 end as groupID
from t
cross join (select @prev:='',@diff:=0,@grp:=1) r
order by tm

关于MySQL:如何为具有接近时间戳的记录分配相同的ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45260291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com