从DB表中删除重复的行

时间:2012-03-28 13:30:12

标签: sql

  

可能重复:
  SQL - How can I remove duplicate rows?
  Deleting duplicate rows from a table

这是我的案例

我有一个名为result的表,看起来像这样

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不同(标识设置为是,因此id增加自动)

我想删除不需要的行,但只保留1个样本

其他表格

IdUnitIdMeaIdAnalyte为fk

我该怎么做?

我想为所有其他案例做出来(是的,bd是乱七八糟的,很多重复)所以我想成为“通用”并在1次操作中完成工作(如果可能的话)

对不起,如果我不够清楚,这是我在这里的第一篇文章!!!!

2 个答案:

答案 0 :(得分: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)

注意: 表是您表格的名称。

希望这有帮助。

答案 1 :(得分: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,我给出了解决方案。

P.S:where子句中的ID是我们在MYSQL中使用的ROWID。