gpt4 book ai didi

MYSQL - 如何避免基于唯一键和服务器时间戳的重复值

转载 作者:行者123 更新时间:2023-11-28 23:24:37 26 4
gpt4 key购买 nike

如果两个唯一列的 serverTimeStamp 相差 15 秒,我正在尝试编写查询以将重复值更新为 0。

id  D_Id             value serverTimeStamp
1 001 1 2016-10-05 23:37:02
2 002 1 2016-10-05 23:37:04
3 001 1 2016-10-05 23:52:24
4 002 1 2016-10-05 23:55:24
5 001 1 2016-10-06 00:29:09
6 002 1 2016-10-06 00:29:11
7 002 1 2016-10-06 01:56:51
8 001 1 2016-10-06 01:56:58

期望输出:

id  D_Id             value serverTimeStamp
1 001 1 2016-10-05 23:37:02
2 002 0 2016-10-05 23:37:04
3 001 1 2016-10-05 23:52:24
4 002 1 2016-10-05 23:55:24
5 001 1 2016-10-06 00:29:09
6 002 0 2016-10-06 00:29:11
7 002 1 2016-10-06 01:56:51
8 001 0 2016-10-06 01:56:58

如何通过查询实现?

最佳答案

你可以试一试:

UPDATE your_table YT
INNER JOIN
(
SELECT
id,
D_Id,
value,
serverTimeStamp,
@prevTimeStamp AS prevTimeStamp,
@prevTimeStamp := serverTimeStamp
FROM your_table
CROSS JOIN (SELECT @prevTimeStamp := NULL) AS var
ORDER BY serverTimeStamp
) AS x
ON YT.id = x.id
SET YT.value = 0
WHERE TIMESTAMPDIFF(SECOND,x.prevTimeStamp,YT.serverTimeStamp) <= 15;

根据时间升序对记录进行排序。

将上一行的 serverTimeStamp 值存储在用户定义的变量中。

现在在您的表和上面的排序表之间进行内部连接(使用前一行的时间戳)。

最后,仅将 previousTimeStamp15 内的那些记录的 value 更新为零 (0) serverTimeStamp

的秒数

关于MYSQL - 如何避免基于唯一键和服务器时间戳的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39890289/

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