删除指定列中包含重复/重复数据的行

时间:2016-04-17 20:55:59

标签: mysql field records

我需要删除重复记录(仅当重复cod1和模型时)并且只保存其中一个。

ID Cod1 Model
1   332  mdl1
2   332  mdl1
3   332  mdl2
4   450  mdl2
5   450  mdl2

输出必须是

ID  Cod1  Model
1    332  mdl1
3    332  mdl2
4    450  mdl2

非常感谢!

1 个答案:

答案 0 :(得分:0)

试试这个。用您的实际表名替换Table1的出现次数。

DELETE FROM Table1 WHERE ID IN
(SELECT * FROM 
   (SELECT T2.Id
    FROM Table1 T1
    INNER JOIN Table1 T2 
    ON T1.Cod1 = T2.Cod1 AND T1.Model = T2.Model
    WHERE T2.ID > T1.ID
    )T
);

sqlfiddle

在最内层查询中,当Cod1和Model匹配时,T1将找到匹配的T2记录,而T2.Id将是较大的id。因此它返回要删除的行的ID。但是Mysql不允许你从同一个表的查询中删除所以我们必须将它包装在另一个SELECT语句中以欺骗Mysql让你这样做。就是这样。