mysql删除具有重复日期的行,保留最新日期

时间:2016-11-16 15:39:58

标签: mysql duplicates mysql-python

在我的mysql数据库中,我有一个类似于这个的表:

Data                |Val  | Val2 
2016-11-11 14:48:38 |10   | 20
2016-11-11 14:48:38 |30   | 40
2016-11-06 11:48:38 |50   | 60
2016-11-08 19:48:38 |70   | 80
2016-11-06 11:48:38 |90   |100
2016-11-16 10:13:37 |100  |110
2016-11-16 10:13:37 |120  |130
2016-11-16 10:16:43 |140  |150
2016-11-16 10:13:37 |140  |150

有时在我的数据库中我可以有重复的日期(数据)但是(val,val2)的值不同,我希望删除所有具有重复数据的行,除了插入数据库的最后一行。我怎样才能实现这一目标? 例如,对于上面的表格,我想要的结果是:

Data             |Val |Val2
11/11/2016 14:48 |30  |40
08/11/2016 19:48 |70  |80
06/11/2016 11:48 |90  |100
16/11/2016 10:16 |140 |150
16/11/2016 10:13 |140 |150

我使用的是sqlite3,我可以通过

实现我想要的
delete from table where rowid not in (select max(rowid) from table group by data)

但我找不到mysql的等价物。

1 个答案:

答案 0 :(得分:1)

这将删除具有相同日期的最小Val

<强> SQL DEMO

DELETE t1 
FROM Table1 t1
JOIN Table1 t2
  ON t1.`Data` = t2.`Data`
 AND t1.`Val` < t2.`Val`;

<强>输出

enter image description here