快捷搜索:   nginx

MYSQL数据库去除重复记录方法 一句话代码实战

MYSQL数据库操作的过程中,经常会遇到需要去除数据库中重复内容的操作,如果一条条手动操作,那将很费时费力,其实有很简单的MYSQL语句可以实现直接去重的操作,详细操作方法如下:

一、有主键去重

1、单字段重复
 
table  ab

我们先看看拆分的操作步骤

查询重复记录(一条)

select aid from ab group by aid having count(*)>1


结果:

 查询重复记录(全部)

select * from ab t where t.aid in(select aid from ab group by aid having count(*)>1);

查询结构:

  删除重复记录保留一条
delete from ab where aid in(
    select t.aid from(
        select aid from ab group by aid having count(*)>1
    ) t
)and id not in(
    select t.id from(
        select max(id) as id from ab group by aid having count(*)>1
    ) t
)
 运行,去重成功!
 
2、多字段重复
table  ab
 查询重复记录(一条)
select aid,bid from ab group by aid,bid having count(*)>1

查询结果:

  查询重复记录(全部)
select * from ab t where(t.aid,t.bid)in(select aid,bid from ab group by aid,bid having count(*)>1);


查询结果:
 删除重复记录保留一条

delete from ab where (aid,bid) in (
    select t.aid,t.bid from (
        select aid,bid from ab group by aid,bid having count(*)>1
    ) t
) and id not in (
    select t.id from (
        select max(id) as id from ab group by aid,bid having count(*)>1
    ) t
)
去重成功!
 

二、无主键去重

单字段、多字段
table ab

 删除重复记录保留一条
--建临时表插入去重数据
create table ab_temp (select * from ab group by aid,bid having count(*)>1);
--删除重复数据
delete from ab where (aid,bid) in (
    select t.aid,t.bid from (
        select aid,bid from ab group by aid,bid having count(*)>1
    ) t
);
--插入去重数据
insert into ab select * from ab_temp;
--删除临时表
drop table ab_temp;

 去重成功!


顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论