MySQL删除重复的行,保留其中一行
示例
有这样一个表
CREATE TABLE `tests` (
`id` int(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL
) ;
现在需要删除重复name的行,但保留其中一行。
方法一:
保留id小的一行
DELETE n1 FROM tests n1, tests n2 WHERE n1.id > n2.id AND n1.name = n2.name
保留id大的一行
DELETE n1 FROM tests n1, tests n2 WHERE n1.id < n2.id AND n1.name = n2.name
方法二
对于数据量大的表,使用删除的方法可能会很慢,可以使用插入临时表的方法:
INSERT INTO tempTests(id,name)
SELECT DISTINCT id,name
FROM tests;