首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除重复纪录隔日1天

删除重复纪录隔日1天
EN

Stack Overflow用户
提问于 2015-12-30 21:03:30
回答 1查看 46关注 0票数 0

如何根据狭小的时间框架参数删除重复记录?每个记录都有一个唯一的日期(数据转储日期)。副本之间有一个常见的序列号和状态号--我只想从前一天或以后的一天中提取一个副本--并且要明确一点:在将来,我可能会捕获包含相同序列号/状态号组合的相同记录的另一个版本--(记录的其他方面将发生变化)。我的存档表确保没有基于唯一数据日期和序列号的重复记录.但我不知道如何处理第二天出现的同样的记录,而不能选择简单地按状态号分组,因为这个数字在一年中可能会出现很多次,我需要保留它们。

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

代码语言:javascript
复制
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`
EN

回答 1

Stack Overflow用户

发布于 2015-12-31 05:39:10

您可以选择按状态号进行分组--首先要有一个CONCAT(),这样您就可以对该组中的数据进行区分。

SELECT data-dump-date, serial-number, count(*) FROM archive_table GROUP BY CONCAT(data-dump-date, serial-number)

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

没有真正的理由不能同时编写单个字段和CONTAT()结果,只是引入了在字段之间出现异常的可能性,因为您已经复制了数据并编写了两次。即。如果您在该行中使用UPDATE,那么需要对该行中的数据的两个副本进行UPDATE

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34537202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档