如何删除"复制" MySQL中的记录?

时间:2016-03-18 18:07:18

标签: mysql sql

我需要从我的表中删除某些记录,我认为"重复"。它们并不完全重复,因为并非每个列值都相同。相反,逻辑是这样的:

  

如果col_acol_b在多行中具有相同的值,并且   col_c(这是一个时间戳)在每个5分钟之内   其他,然后删除除最早行之外的所有行   时间戳。

示例数据:

id    col_a    col_b     col_c
1     foo      bar       2016-01-01 00:00:00
2     foo      bar       2016-01-01 00:00:12
3     foo      bar       2016-01-01 00:00:22
4     foo      bar       2016-01-05 00:00:00
5     apple    banana    2016-01-01 00:00:00
6     apple    banana    2016-01-05 00:00:00

在上面的例子中,我想删除id = 2和id = 3.这可以在MySQL中做到吗?

1 个答案:

答案 0 :(得分:0)

我认为这可以解决问题

DELETE FROM tab
WHERE ID IN(
select t1.id
FROM tab as t1 JOIN tab as t2
ON t1.col1=t2.col1 AND t1.col2 = t2.col2
WHERE DATE_DIFF(MINUTE, t1.col3, t2.col3) < 5 
AND DATE_DIFF(MINUTE, t1.col3, t2.col3) > 0) 

加入表格并获取所有重复项。在那些重复项中,仅选择满足时间约束的那些。注意:> 0 and not >=0

相关问题