{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

Mysql如何去掉数据库中的重复记录?

EminjannnEminjannn 回答0 收藏1
收藏问题

3条回答

caoym

caoym

回答于2022-06-28 14:00

很简单 通过id删除

DELETE

FROM

table_name AS ta

WHERE

ta.唯一键 <> (

SELECT

t.maxid

FROM

( SELECT max( tb.唯一键 ) AS maxid FROM table_name AS tb WHERE ta.判断重复的列 = tb.判断重复的列 ) t

);

评论0 赞同0
  •  加载中...
wuyumin

wuyumin

回答于2022-06-28 14:00

从mysql数据库删除重复记录只保留其中一条

这两天做了一个调用第三方接口的小程序,因为是实时更新数据,所以请求接口的频率就很高,这样有时会出现往数据库插入重复的数据,对数据库造成压力也不方便管理,因为要通过原生sql语句,解决数据库的去重问题.在过程中遇到了麻烦,最终解决了分享出来。

要删除重复的记录,就要先查出重复的记录,这个很容易做到

select * from cqssc group by expect having count(expect) > 1

注意:这是查出所有重复记录的第一条记录,需要保留,因此需要添加查询条件,查出这三条的重复记录

select id,expect from cqssc where expect in (select expect from cqssc group by expect having count(expect)>1)

and id not in(select min(id) from cqssc group by expect having count(expect)>1)

以上得到的结果就是我们需要删除的记录!

下面是我最初做错的地方,既然要删除,可能都会想到这样很简单了

报错了!!!在Mysql中是不能删除查询出来的记录的,这里很容易错,当时在这里纠结了很久,而是要通过一张临时表来解决。

delete from cqssc where id in (select id from (select id from cqssc where expect in

(select expect from cqssc group by expect having count(expect)>1) and id not in

(select min(id) from cqssc group by expect having count(expect)>1)) as tmpresult)

再运行试试

删除成功,最后再查询一下看是否还有重复记录

可以戳原文看看:https://www.cnblogs.com/jdbeyond/p/8157224.html

评论0 赞同0
  •  加载中...
wpw

wpw

回答于2022-06-28 14:00

直接写个小程序把重复的删除掉

评论0 赞同0
  •  加载中...

相关问题

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<