gpt4 book ai didi

mysql - 从表中删除重复的行(每天的第一个时间戳除外)

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

我需要帮助从表中删除不需要的行。

该表有用户“签到”,并且由于软件的早期错误,有时会出现重复。

每天每个uid、每个lid 只能有一个条目(时间戳)。

示例数据:

 id | t |uid| lid| timestamp
______________________________________
339 | 0 | 1 | 54 | 2014-03-28 16:02:05 <-- KEEP
341 | 0 | 1 | 54 | 2014-03-28 17:14:27 <-- DISCARD
420 | 0 | 1 | 54 | 2014-04-02 14:47:55 <-- KEEP
421 | 0 | 1 | 54 | 2014-04-02 15:15:04 <-- DISCARD
423 | 0 | 1 | 54 | 2014-04-03 11:06:36 <-- KEEP
427 | 0 | 1 | 54 | 2014-04-03 12:15:47 <-- DISCARD
428 | 0 | 1 | 54 | 2014-04-03 14:24:20 <-- DISCARD
470 | 0 | 1 | 54 | 2014-04-04 12:43:36 <-- KEEP
487 | 0 | 1 | 54 | 2014-04-04 14:34:38 <-- DISCARD
488 | 0 | 1 | 54 | 2014-04-04 14:36:41 <-- DISCARD

希望能够在我的表上执行 MySQL DELETE 命令来丢弃不需要的行(按 id)。

此外,如果可能的话,这应该适用于多个 uidlid。如果没有,我可以轻松地在带有循环的脚本中运行。

提前致谢

最佳答案

更新基于与 OP 的聊天:

试试这个:

DELETE a
FROM
check-ins a
left join
(
SELECT uid, lid, MIN(timestamp) AS min_time
FROM check-ins
GROUP BY uid, lid, DATE(timestamp)
) AS P
on
(a.uid = p.uid AND
a.lid = p.lid AND
a.timestamp = p.min_time)
where p.uid IS NULL

解释一下:首先尝试 select 语句。这将返回每个盖子每个 uid 的所有最小日期时间戳。

SELECT uid, lid, MIN(timestamp) AS min_time 
FROM check-ins
GROUP BY uid, lid, DATE(timestamp)

然后删除除这些记录之外的所有内容。

关于mysql - 从表中删除重复的行(每天的第一个时间戳除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44654342/

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