【发布时间】:2016-04-17 20:55:58
【问题描述】:
我需要删除重复记录(仅当 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
非常感谢!
【问题讨论】:
我需要删除重复记录(仅当 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
非常感谢!
【问题讨论】:
试试这个。将出现的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 让您这样做。就是这样。
【讨论】: