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;
 
             
             
             
             
            