我需要删除重复记录(仅当重复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
非常感谢!
答案 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
);
在最内层查询中,当Cod1和Model匹配时,T1将找到匹配的T2记录,而T2.Id将是较大的id。因此它返回要删除的行的ID。但是Mysql不允许你从同一个表的查询中删除所以我们必须将它包装在另一个SELECT语句中以欺骗Mysql让你这样做。就是这样。