我需要从我的表中删除某些记录,我认为"重复"。它们并不完全重复,因为并非每个列值都相同。相反,逻辑是这样的:
如果
col_a
和col_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中做到吗?
答案 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