Sql 从DB表中删除重复行

Sql 从DB表中删除重复行,sql,Sql,可能重复: 这是我的箱子 我有一个名为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 patl

可能重复:

这是我的箱子

我有一个名为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
(标识设置为yes,因此
id
自动增加)

我想删除不需要的行,但只保留一个示例

IdUnit
IdMea
IdAnalyte
对于其他表是fk

我该怎么做

我想让它适用于所有其他情况(是的,bd是一团乱,有很多重复),所以我想成为“通用”并在一次操作中完成这项工作(如果可能的话)

对不起,如果我不够清楚,这是我在这里的第一篇帖子

DELETE FROM Table
WHERE ID NOT IN
(SELECT A.RowId FROM
 (SELECT Id,MAX(ID) AS RowId
  FROM Table
  GROUP BY ID
 ) A
);
假设这是MYSQL,我给出了解决方案


注意:where子句中的ID是我们在MYSQL中使用的ROWID。

MYSQL中,您可以这样使用:

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

注意:表是您的表的名称


希望这有帮助。

如果“id”是一个标识列,为什么所有行都显示相同的“id”值?是显式设置的“id”吗?还是说原始数据表中有一个标识列被复制到了“result”表中?多亏了all!!我接受了您的一些提示,它完全按照我的需要工作。我只需要删除constraint,执行删除,然后添加约束。明天我将在其他选项卡上删除子引用。是的,这真的很有帮助!!!!感谢您的快速回答!!!!!
DELETE FROM table
WHERE id NOT IN 
(SELECT * FROM (SELECT MIN(a.id) FROM table a 
GROUP BY a.IdUtilisateur) b)