在我的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的等价物。
答案 0 :(得分:1)
这将删除具有相同日期的最小Val
<强> SQL DEMO 强>
DELETE t1
FROM Table1 t1
JOIN Table1 t2
ON t1.`Data` = t2.`Data`
AND t1.`Val` < t2.`Val`;
<强>输出强>