2016-11-16 115 views
2

在我的MySQL數據庫中,我有類似這樣的一個表: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

你可以在這裏找到答案HTTP時,這將刪除最小Val://計算器.COM /問題s/2728413/oracle-s-rowid-in-mysql –

+0

你正在使用rowid的東西,所以如果表有一個主鍵你可以用它來得到相同的效果 –

+0

1)SELECT&remember你想要的行,2)刪除所有行,3)插入保存的行?這並不漂亮,但... – Mawg

回答

0

具有相同的日期

SQL DEMO

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

輸出

enter image description here