本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
MySql数据库去除重复的数据
吴振华 · 564浏览 · 发布于2019-09-16 +关注

今天群内有群友提出了一个问题,就是MySql中删除重复数据的问题,然后回答了一下,发现正好接触到了之前可能没关注的一点儿小知识,在此做下简要记录(哦对,昨天晚上在试用腾讯云数据库的时候还遇到一个问题,就是腾讯云数据库的Mysql对大小写是敏感的)。

OK,接下来我们进入正题,首先我按照群友的数据结构创建了一张表,填充了一部分数据,结构如下图所示:

那么我们首先来确定我们删除数据的时候的所需条件,首先找到所有重复的数据记录,使用如下sql语句进行

select * from a group by cardno having count(cardno) > 1

查询结果如下:

20141012191036421.jpg

查询出来的是所有重复数据的第一条记录,但是这个是我们需要保留的,所以条件变成了,(改用如下的sql语句查询,根据cardno查询)重复数据中不包含本条记录的结果删除:


下午写的时候犯了个错误,这里已经更正

 查询语句如下:

select id,cardno from a where cardno in (select cardno from a group by cardno having count(cardno)>1)

and id not in(select min(id) from a group by cardno having count(cardno)>1)


20141012230210453.jpg

这些记录是我们需要删除的,OK,接下来我们就直接删除掉这些数据就OK了,我们根据id主键来删除,sql语句如下:

delete from a where id in(select id from a where cardno in (select cardno from a group by cardno having count(cardno)>1)

and id not in(select min(id) from a group by cardno having count(cardno)>1))

执行结果如下:

20141012230626621.jpg

Oops!报错了,这条提示信息说的是,诶同学,在MySql里你不能先查询了然后再删除诶!哦,好吧,这个就只能等官方升级支持这个新特性了,但是我们现在就要解决这个棘手的问题啊,肿么办?我们用临时表来解决,然后我们的删除语句变成了,这个样子:

delete from a where id in (select id from (select id from a where cardno in (select cardno from a group by cardno having count(cardno)>1)

and id not in(select min(id) from a group by cardno having count(cardno)>1)) as tmpresult)

执行,OK,可以看到我们上面查询的出来要删除的6条重复数据已经被清理掉了,结果如下:

20141012233432171.jpg

OK,那么群里的那位朋友的问题是,他只想删除固定的卡号的话该怎么办呢?


这个就相当于附加的条件筛选了,我们直接在临时表的查询里附加条件:(注:红色加粗字体是附加条件)

delete from a where id in (select id from (select id from a where cardno in (select cardno from a group by cardno having count(cardno)>1 <strong>and cardno=333</strong>)

and id not in(select min(id) from a group by cardno having count(cardno)>1)) as tmpresult)



这样儿就完成了Mysql删除重复数据的需求。

相关推荐

使用SELECT语句检索数据

奔跑的男人 · 805浏览 · 2019-06-03 09:33:43
部署MySQL延迟从库的几个好处

吴振华 · 664浏览 · 2019-05-14 21:57:51
MongoDB凭什么跻身数据库排行前五?

iamitnan · 723浏览 · 2019-06-18 10:04:56
Oracle开启和关闭的几种模式

qq2360248666 · 751浏览 · 2019-06-04 10:18:47
加载中

0评论

评论
坐标是江苏.南京,行业是互联网,技术是PHP和java,还有熟悉前后端等。
分类专栏
小鸟云服务器
扫码进入手机网页