gpt4 book ai didi

mysql - 删除相隔 1 天的重复记录

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

如何根据狭窄的时间范围参数删除重复记录?每条记录都有一个唯一的日期(数据转储日期)。重复项之间有一个通用的序列号和状态号 - 我只想从前一天或之后的一天中提取一个重复项 - 并且要明确:将来,我可能会捕获包含相同序列/状态的同一记录的另一个版本我想要保留的数字组合 - (记录的其他方面将会发生变化)。我的存档表确保根据唯一数据日期和序列号不存在重复记录...但我不知道如何处理第二天出现的相同记录并且无法简单地进行分组按状态编号,因为该编号在一年内可能会出现多次,我需要保留它们。

这是我的理论尝试,每天都会运行:

DELETE `t`
FROM `archive_table` as `t` JOIN
(SELECT `data-dump-date`, COUNT(`serial-number`)as `count` FROM
`archive_table`
WHERE

`data-dump-date` >= `todays-date` -1

GROUP BY `serial-number`,`status-number` HAVING COUNT(*) > 1) as `g`
ON `t`.`data-dump-date` = `g`.`data-dump-date`
AND `t`.`serial-number` = `g`.`serial-number`

最佳答案

您确实可以选择按状态编号进行分组 - 只需首先使用 CONCAT(),这样您就可以区分该组中的数据。

从 archive_table GROUP BY CONCAT(数据转储日期,序列号)中选择数据转储日期、序列号、计数(*)

稍微昂贵的查询和另外两个更好的选择是首先不写入,或者拥有实际的唯一序列号。您可能会选择在写入时执行 CONCAT() ,因为这只会是两个字段并影响一行,而不是根据我的查询在读取时执行,这会影响整个表。

没有真正的原因说明您无法同时写入各个字段和 CONTAT() 结果,只是因为您复制了数据而引入了字段之间存在异常的可能性并且写了两遍。 IE。如果您UPDATE该行,那么您需要UPDATE该行中数据的两个副本。

关于mysql - 删除相隔 1 天的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34537202/

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