数据库
首页 > 数据库> > mysql重复数据删除

mysql重复数据删除

作者:互联网

这显示了所有具有两个完全相同的条目的名字和姓氏

SELECT `firstname`,`lastname`,COUNT(*) AS Count 
FROM `people` 
GROUP BY `firstname`,`lastname`
HAVING Count = 2

如何将其转换为带有LIMIT的DELETE FROM WHERE语句,以仅删除每个条目中的一个并保留另一个条目.

好吧,这似乎是技术的方式我只是在php循环中做它

解决方法:

您可以创建一个表,其中包含每个重复项的1条记录:然后从人员表中删除所有重复记录,然后重新插入重复记录.

-- Setup for example
create table people (fname varchar(10), lname varchar(10));

insert into people values ('Bob', 'Newhart');
insert into people values ('Bob', 'Newhart');
insert into people values ('Bill', 'Cosby');
insert into people values ('Jim', 'Gaffigan');
insert into people values ('Jim', 'Gaffigan');
insert into people values ('Adam', 'Sandler');

-- Show table with duplicates
select * from people;

-- Create table with one version of each duplicate record
create table dups as 
    select distinct fname, lname, count(*) 
    from people group by fname, lname 
    having count(*) > 1;

-- Delete all matching duplicate records
delete people from people inner join dups 
on people.fname = dups.fname AND 
   people.lname = dups.lname;

-- Insert single record of each dup back into table
insert into people select fname, lname from dups;

-- Show Fixed table
select * from people;

标签:mysql,select,duplicate-data
来源: https://codeday.me/bug/20190701/1343701.html