2012-03-28 42 views
1

可能重複:
SQL - How can I remove duplicate rows?
Deleting duplicate rows from a table從數據庫表中刪除重複的行

這裏是我的情況下

我有一個名爲結果表誰是這樣的

Id Valeur IdUtilisateur  Date  IdUnit IdMea IdAnalyte 
1 0.440  patlach01 2012-01-02  2  39258 2541 
2 0.440  patlach01 2012-01-02  2  39258 2541 
3 0.440  patlach01 2012-01-02  2  39258 2541 

正如你看到的我有類似的行,但不同id(標識設置爲yes,那麼id增加了自動)

我想刪除不需要的行,但只保留1個樣本

IdUnitIdMeaIdAnalyte是FK的其他表格

我該怎麼做?

而且我想使其成爲所有其他情況下(是的BD是一個爛攤子,重複了很多),所以我想成爲「普通」和做的工作在1個操作(如果可能)

很抱歉,如果我不夠清晰,這是我的第一篇文章在這裏!!!!

+2

您正在使用哪種RDBMS? – Teja 2012-03-28 13:31:45

+0

如果'id'是一個標識列,爲什麼所有行都顯示'id'的相同值? 'id'是否明確設置?或者,你的意思是原始數據表中有一個標識列被複制到「結果」表中? – PinnyM 2012-03-28 13:36:08

回答

1
DELETE FROM Table 
WHERE ID NOT IN 
(SELECT A.RowId FROM 
(SELECT Id,MAX(ID) AS RowId 
    FROM Table 
    GROUP BY ID 
) A 
); 

假設這是MYSQL,我給的解決方案

PS:在該ID where子句我們在MYSQL中使用的ROWID。

+0

感謝所有!我採取了一些所有的提示,並按照我的需要進行工作。我只需要刪除約束,執行刪除然後添加約束。我明天將在其他選項卡上刪除子文件。 – 2012-03-28 18:30:53

2

MYSQL你可以使用這樣的:

DELETE a FROM table a, table b 
WHERE a.id > b.id 
AND a.IdUtilisateur = b.IdUtilisateur 

OR

DELETE FROM table 
WHERE id NOT IN 
(SELECT * FROM (SELECT MIN(a.id) FROM table a 
GROUP BY a.IdUtilisateur) b) 

注:表是你的表的名稱。

希望這會有所幫助。

+0

是的,它真的很有幫助!感謝您的快速回答! – 2012-03-28 18:34:03