如何正确的使用一条SQL删除重复数据
#头条创作挑战赛#
数据库中表存在重复数据,需要清理重复数据,清理后保留其中一条的情况是比较常见的需求,如何通过1条SQL准确的删除数据呢?
1. 创建表及测试数据
1.1 数据库中创建一张测试表CREATE TABLE `test` ( `id` INT NOT NULL AUTO_INCREMENT, `c1` VARCHAR(20) DEFAULT NULL, `c2` VARCHAR(20) DEFAULT NULL, `c3` INT DEFAULT NULL, `c4` DATETIME DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8;
1.2 插入测试数据INSERT INTO test(c1,c2,c3,c4) VALUES( "a","b",10, "2022-05-24 18:00:46"),("a","c",20, "2022-05-24 18:00:46"); INSERT INTO test(c1,c2,c3,c4) VALUES( "a","c",10, "2022-05-24 18:00:46"),("a","b",20, "2022-05-24 18:00:46"); INSERT INTO test(c1,c2,c3,c4) VALUES( "b","c",10, "2022-05-24 18:00:46"),("d","b",20, "2022-05-24 18:00:46"); INSERT INTO test(c1,c2,c3,c4) VALUES( "b","c",20, "2022-05-24 18:00:46"),("d","b",30, "2022-05-24 18:00:46"); INSERT INTO test(c1,c2,c3,c4) VALUES( "b","c",20, "2022-05-24 18:00:46"),("a","b",40, "2022-05-24 18:00:46"); INSERT INTO test(c1,c2,c3,c4) VALUES( "d","b",40, "2022-05-24 18:00:46"),("r","f",40, "2022-05-24 18:00:46");
1.3 查看重复数据
例如c1,c2 这2个字段组合作为唯一条件,则查询重复数据的SQL如下SELECT c1, c2, COUNT(*) FROM test GROUP BY c1, c2 HAVING COUNT(*) > 1;
可见,结果如下:
2. 如何删除重复数据
2.1 方案一
很多研发同学习惯的思路如下:先查出重复的记录(使用in)再查出在重复记录但id不在每组id最大值的记录直接将select 改为delete进行删除
查询SQL如下SELECT * FROM test WHERE (c1,c2) IN ( SELECT c1,c2 FROM test GROUP BY c1,c2 HAVING COUNT(*)>1 ) AND id NOT IN ( SELECT MAX(id) FROM test GROUP BY c1,c2 HAVING COUNT(*)>1) ORDER BY c1,c2 ;
看上去比较符合结果了,但是改为delete执行的时候结果如下:-- delete SQL DELETE FROM test WHERE (c1,c2) IN ( SELECT c1,c2 FROM test GROUP BY c1,c2 HAVING COUNT(*)>1 ) AND id NOT IN ( SELECT MAX(id) FROM test GROUP BY c1,c2 HAVING COUNT(*)>1)
出现报错信息:错误代码:1093 You can"t specify target table "test" for update in FROM clause
也就是说MySQL里需删除的目标表在in子查询中时,不能直接执行删除操作。
3. 推荐写法
基于以上情况,使用单条SQL删除的方式如下:
查询SQL:SELECT a.* FROM test a , (SELECT c1,c2,MAX(id)id FROM test GROUP BY c1,c2 HAVING COUNT(*)>1)b WHERE a.c1=b.c1 AND a.c2=b.c2 AND a.id <>b.id
删除SQLDELETE a FROM test a , (SELECT c1,c2,MAX(id)id FROM test GROUP BY c1,c2 HAVING COUNT(*)>1)b WHERE a.c1=b.c1 AND a.c2=b.c2 AND a.id <>b.id
结果:查询:delete a FROM test a , (select c1,c2,max(id)id from test group by c1,c2 having count(*)>1)b where a.c1=b.c1 and a.c2=b.c2 and a.... 共 7 行受到影响
删除后数据如下:
无重复数据了。
想要了解更多数据库技术文章,可关注微信公众"数据库干货铺"获取
股票如何预判涨跌?股票的涨跌真的可以预测吗?如果有人告诉你,他可以预测股票的涨跌,尤其说可以预测短期股票的涨跌,那就要小心了。一股票涨跌受多重因素影响,很难把握一是受企业基本面的影响。企业盈利能力和
孩子积食不消化怎么办?孩子积食有危害,金牌月嫂2个食谱搞定!现在天气冷了,很多孩子食欲都不好,有些身子弱的孩子,还会咳嗽发热等,这有可能是因为积食。有俗话说十孩九积,现在生活条件好了,家长们喜欢给孩子补
怎么将视频转为文字?首先感谢邀请!您问的问题是怎么将视频转为文字,我想具体确认下,您是不是想将视频的语音转化为文字也就是为了自动为视频加字幕,如果是这个需求可以继续往下看。我刚开始做自媒体视频时也遇到
现在局域网监控软件比较好的有哪些?公司使用的局域网监控软件有iMonitorEAM,该软件可以监控到被控电脑从开机到关机期间所有的操作记录,包括屏幕截图,键盘记录,软件记录,上网记录,文件使用记录,邮件记录,文件传
为什么说懂行买苹果华为,半懂买小米,不懂买荣耀,事实如此吗?谢邀!我在使用手机这个问题上的态度一直只有一个,就是要根据个人条件,买够用的就行,跟懂不懂其实无关。而且题主这个分类也有点奇怪。有人总说苹果如何不卡,质量如何好,逼格如何高。但苹果
去b站看小米为什么全部是骂bug的,难道真的有那么多bug?因为黑小米就是流量密码黑小米有钱赚的,一条菊花厂给5毛因为用小米的不用稳定版系统非要用内测版和开发版,然后嫌弃bug多,你说可不可笑那些是人是鬼你根本无从分辨!黑小米是流量密码!换
非诚勿扰火了十年,其实全是托?知道女嘉宾都是从哪来的吗?根据幕后人士透露,非诚勿扰每期节目女嘉宾1000元,男嘉宾3000元。女嘉宾有五类一类是真实来相亲,寻找真爱的,这一类女生大多条件比较好,在现实生活当中,不容易找到理想的对象,所以
LOL一些皮肤被官方禁用,充钱真的不能变强吗?英雄联盟里有的皮肤已经影响到游戏的平衡,所以官方不得不禁用了,这些皮肤到底是哪里牛逼了,可以影响到游戏的公平性。充钱使你变得更强在英雄联盟这个游戏里是行不通的,今天我给大家总结一下
假如安东尼打了阿泰一拳,阿泰敢不敢还击?谁最有可能是赢家?两个都是狠人,阿泰单挑能力在联盟都是顶尖的存在,其身体素质和战斗意志无瑕疵,而安东尼就是一个老炮,在NBA纵横多年不是白混的,而且有黑道背景的加持,也会给人一种震慑,所以都有取胜的
有没有黑色的壁纸,或者黑色的文字壁纸推荐?用了一年多没换正好有几张!(gtlt)本人也喜欢黑色!我手机就是以黑色为底的壁纸先发这些吧,拿走不谢。这个我有,而且就喜欢极简,带文字的壁纸,想要更多带字壁纸,可以在我同名的公众号
矮个子男生如何打扮?回答之前要先挖掘问题的本质,为什么会显矮?让我们从身体比例的一些原理说起。1。头身比例学过画画的人都知道的一些小知识,一个成年人正常的头身比例是17。58个人头高头肩是12,头身比
记者巴萨领先孔德争夺战,但需要卖人启动经济杠杆才能报价直播吧7月16日讯根据此前的消息,孔德是巴萨的重点引援目标之一,巴萨正和塞维利亚展开相关谈判,巴萨也很有可能采取球员转会费的形式来签下球员。据记者ShayLugassi报道,尽管切
都说湖北的女孩子最美,我本来不服,但看完这9个女明星,我信了位于中国中部的湖北,气候宜人,风景秀丽,而这里产出的美女更是兼具了北方女子的高挑,和南方美女的婉约,因此有人说,湖北的女孩子最美,我本来不服,但是看完这9个女明星,我信了。毕竟这9
谣言陈某志出国外逃,母亲是公安厅政治部副主任,为啥还有人相信2022年6月10日凌晨2点40分左右,唐山市某烧烤店里,陈某志伙同8个朋友殴打4个年轻貌美的女子。经网络曝光后,引起了滔天大浪。警察用了两天就将所有施暴者捉拿归案。本以为此案已尘
劣迹斑斑的他们还想来挣钱前几天,咱们说湾湾那边海王挺多,到底还是糖肤浅了。湾湾媒体的包容度确实不是一般的高。就在前几天,后悔哥居然在湾湾那边拿影帝了?!第24届台北电影节中,后悔哥凭借电影月老一举拿下湾湾
海蜘蛛带给我们的思考世界上唯一没有天敌的生物,不是它有多厉害,而是它实在是没有什么利用价值,它就是海蜘蛛,为了逃避天敌,它愣是把自己进化成了一个废物,它除了苗条的大长腿外,身上没有一点有营养价值的东西
一周两次挑衅,美军舰穿行南沙群岛,解放军启动南海军演强势应对据美国有线电视新闻网(CNN)7月16日报道,美国海军第七舰队发表声明称,本福德号导弹驱逐舰于当日穿越了南海南沙群岛有争议的水域,进行了自由航行行动,这是本周内该舰第二次挑战中国在
韭菜饺子儿子回乡下老家看望父母,但只能在家呆一天一夜。他必须在第二天早上5点30分离开。离开的前一天晚上,儿子和他的母亲坐在旧房间里,一直聊到深夜。睡前,儿子遗憾地说妈,这次太赶时间了,下
深圳楼市调查全款买房背后的资金诱惑证券时报记者吴家明在我们这成交的客户,接近百分之七八十都是一次性付款买房。在深圳传统豪宅片区香蜜湖,资深房产中介陈经理告诉证券时报记者,不管是买这边豪宅还是附近的新房,客户多数都是
他们楼房为什么要集体断供呢?难道他们不怕被银行起诉吗?他们为什么要集体断供呢?难道他们不怕被银行起诉吗?难道他们不知道不还房贷,接下来所有银行账户的钱都会被冻结吗?法院强制执行,上不了飞机,坐不了高铁,买不了新车,甚至还会影响孩子上学
十月将发射中国首颗综合性太阳探测卫星开始征名盘古之眼夸父逐日羲和浴日这些关于太阳的古老传说,承载着我们对这颗耀眼恒星的无限好奇。今年下半年,浩瀚宇宙中的中国科学卫星系列大家族将再添新星,中国首颗综合性太阳探测专用卫星先进天基
幸福到万家看到王庆来两次被辞退才知道,他有多么拎不清王庆来的扮演者唐曾在宣传幸福到万家时,他说自己现在是王庆来,也是窝囊废,看来,他对自己的定位还挺准确。很多人说,看到王庆来,血压蹭蹭就上去了,太让人上头了,难怪赵丽颖说在拍摄时也被