范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

如何正确的使用一条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 行受到影响
  删除后数据如下:
  无重复数据了。
  想要了解更多数据库技术文章,可关注微信公众"数据库干货铺"获取

库汤科乐沃都是星二代,他们的父亲在NBA表现如何?老沃顿最强NBA有许多星二代球员,他们的父亲都是篮球运动员,甚至曾经在NBA征战过。比起其他球员,星二代有着天然的优势。他们基因强大,大多运动能力出众。同时家境丰厚,可以从小接受专业的训练,曼联华裔小将即将永久离队!委身英冠保级队,在英超4年仅出场5次在顶着超级天才新古利特等名号升入曼联一线队,以及凭借华裔血统格外受到中国球迷关注后,钟塔西(塔希提钟)的成长轨迹无疑是让人失望的。日前,根据英国媒体talkSPORT的最新报道,钟AiFA体育鲁尼指指点点别人球队,但他自己执教的球队却垫底糟糕鲁尼指指点点别人别的球队,但他自己执教的球队却垫底糟糕做球员和做教练完全不是一回事儿,杰拉德和兰帕德现在在英超的执教非常的糟糕,这2人随时都有可能下课,而另外一个英格兰名宿鲁尼,现中超第1丢冠罪人出炉,27岁国脚4天2次坑苦郝伟球迷不该用聚焦中超CBA,独一无二球迷媒体点击右上角关注,不会后悔的尽管中超第12轮补赛还未结束,但最大的冷门已经产生,山东泰山做客挑战上海申花。在外界看来,已经9连胜的泰山取胜本场不成问题氢能源概念下一个A股氢能源之王!四大氢能源潜力股还有谁?在A股,股王是贵州茅台,宁王是宁德时代,最近比亚迪市值破万亿后被称为比王,光伏硅料龙头通威股份股价大涨后又被称为硅王,掌握磷矿资源的云天化则在去年就被称为磷王。股王宁王比王电力央企资产梳理国企改革三年行动即将收官,电力集团优质资产重组进程有望加速国企改革三年行动即将收官,电力集团资产重组有望加速。2020年6月,中央深改委第十四次会议审议通过国企改革三年行动方案(20202022年),国企改革进入冲刺阶段,混合所有制改革进下周大盘或先抑后扬,这三个板块或将迎来报复性上涨这个周末,最大的利空或是来自外围的大跌,人家大涨,我们也没有跟过,大跌也无需担心,大盘或要走独立行情,外围利空最多影响一下开局,经过八月份的震荡,大盘正在酝酿新的突破,金九月大概率中国带头,开始重建阿富汗,消灭后顾之忧,中方的布局很长远在经历数十年战乱后,地处亚洲腹地的阿富汗终于迎来了难得的和平,但面对国内百废待兴的情况,阿方现在急需外部支援。而纵观全球,现在,只有中国可以在助阿重建中挑起大梁。日前,中国驻阿富汗多国开始放弃用美元,金砖国家正式宣布中国正在开发新交易机制近日,金砖国家国际论坛主席阿南德表示,俄印已经开始使用本国货币进行贸易结算。此外,巴西中国和南非也正在对俄罗斯开放,这些举动极有可能成为俄罗斯克服西方制裁的一个真正的机会。金砖国家2900点买入3200点被套不是玩笑话有投资者说自己2900点买入股票,到3200点却被套了,实际上这并不是玩笑话,这种现象未来将成为常态,投资者如果不能选择好板块和个股,看对了大盘也会亏钱。赚了指数赔了钱,是投资者最暴跌70,10万人爆仓28亿,史上最大的泡沫破了跌破2万美元,比特币的崩盘或许刚刚开始。比特币再次跌破20000美元这个周末,虚拟货币惨遭抛弃。8月27日,比特币再次开启杀跌模式,24小时内跌幅逼近900美元,盘中最低点来到19
我省灵活就业人员社保补贴先缴后补山西晚报讯(记者武佳)日前,省人社厅就进一步促进灵活就业人员参加社会保险有关问题下发通知,鼓励灵活就业人员参加社会保险,要求落实灵活就业人员社保补贴政策,社保补贴实行先缴后补。灵活金价微涨!2022年10月26日各大金店黄金价格多少钱一克?周三(10月26日),国际金价走高。由于并未形成方向性行情,今天国内金店的黄金价格大部分维持不变,老凤祥金价上涨1元,周生生黄金下跌1元,这是今天官网公布的黄金报价(仅供参考)金店北京瀛台律师事务所未批先征村民承包地!法院严重违法案件回放小魏的承包地在宁夏回族自治区xx县附近,四至范围东靠王x,金x,西靠马x金x刘x,南靠生产路,北靠公路。2019年下半年xx县相关部门携同xx村的村委会对案涉土地进行了丈量贵州百灵前三季实现净利润1亿元中证网讯(记者康曦)10月26日晚间,贵州百灵发布2022年三季报,公司前三季度实现营业收入20。99亿元,同比增长6。09实现归属于上市公司股东的净利润1亿元,同比下降16。9714岁就长到197?现在小孩子的身高也太厉害了吧,哈哈怎么跟视频上有点不一样呢不得不说今天的风看着有点大了啊遇到这样的司机现在下车还来得及吗像极了我出门的样子小伙子你这么吃真的不感觉到辣吗这么懂事的狗子现在已经不多了啊这就有点小气了你开征消费税有利于对电子烟严管善用秋实10月25日,财政部海关总署税务总局发布关于对电子烟征收消费税的公告。自11月1日起,对电子烟执行征收消费税,实行从价定率的办法计算。生产(进口)环节的税率为36,批发环节的税法证先锋5今晚开播!仅一位原班人马,3大看点太精彩法证先锋5今晚开播!10月26日1800,它将登陆优酷港剧档,再续经典,开启脑力破案模式。网友惊喜之余,却发现法证先锋5仅一位原班人马,几乎是全员大换血。法证先锋5由黄宗泽蔡思贝袁揭东区关于新增风险区域的通告根据当前疫情防控需要,按照国务院应对新型冠状病毒肺炎疫情联防联控机制综合组新型冠状病毒肺炎疫情防控方案(第九版)相关规定,经专家组研判,自2022年10月26日起,揭东区新增以下高4队全败!湖人并肩弱旅,詹皇尴尬个人数据出色,球队进攻垫底NBA常规赛拉开大幕之后,各支球队的表现不同,开拓者一波4连胜表现极其出色,马刺灰熊也有不俗的发挥。截止到目前,联盟中有4支球队开局全败,分别是西部的国王湖人和雷霆,他们均是3连败苹果第四财季在中国营收大涨,库克iPhone14Pro系列供不应求苹果公司正式公布2022财年第四财季业绩,整体表现符合预期,营收额与利润率都出现大幅增长,库克也做出了积极的表态。苹果公司认为,iPhone14系列销量供不应求,消费者都非常喜欢苹上美集团三战IPO,韩束们老了?作者艺馨豆乳拿铁排版Cathy监制Yoda出品不二研究10月5日,韩束母公司上海上美化妆品股份有限公司(下称上美集团)向港交所再次递表,继续冲刺港股国货美妆第一股。上美集团是一家多