SQL怎么删除重复数据

    1 SQL去重

    SQL中去除完全相同数据可以用distinct关键字,任意字段去重可以用group by,以下面的数据表为例。

    2 distinct

    存在两条完全相同的纪录,用关键字distinct就可以去掉

    根据单个字段去重,能精确去重;

    作用在多个字段时,只有当这几个字段的完全相同时,才能去重;

    关键字distinct只能放在SQL语句中的名列前茅个,才会起作用

    SQL怎么删除重复数据

    SQL怎么删除重复数据

    SQL怎么删除重复数据

    一般用来返回不重复的记录条数,返回不重复的条数(去掉test重复的,就剩下6条)

    SQL怎么删除重复数据

    3 group by

    1. 查询根据名字去重后数据(名字相同取id值大的)

    SELECT * FROM stu WHERE id IN (SELECT MAX(id) FROM stu GROUP BY `name`)

    SQL怎么删除重复数据

    2. 删除名字相同数据(名字相同保留id值大的)

    group by + count + max去掉重复数据

    1)SELECT * FROM stu

    SQL怎么删除重复数据

    2)加上group by 后,会将重复的数据去掉了

    SQL怎么删除重复数据

    3) 条件(名字)是数量大于1的重复数据

    SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(`name`) > 1#条件是数量大于1的重复数据SELECT * FROM stu WHERE `name` IN(SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(`name`)>1 )

    SQL怎么删除重复数据

    4)查看某字段重复数据的id

    SELECT id, COUNT(*) FROM stu GROUP BY NAME DESC HAVING(COUNT(*) > 0)

    SQL怎么删除重复数据

    5)查询所有重复数据

    SELECT * FROM stu WHERE NAME IN (SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(`name`) > 1)

    SQL怎么删除重复数据

    5) 去重

    可以使用distinct去重(返回不重复的用户名)

    删除多余的重复记录(name),只保留id最大的记录。

    DELETE FROM stu WHERE id NOT IN ( SELECT a.id FROM ( SELECT MAX( id ) AS id FROM stu GROUP BY `name` )a )

    或者

     DELETE FROM stu WHERE `name` IN (SELECT `name` FROM (SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(`name`)>1) e) AND id NOT IN (SELECT id FROM (SELECT MAX(id) AS id FROM stu GROUP BY `name` HAVING COUNT(`name`)>1) t) #查询显示重复的数据都是显示最前面的几条,因此不需要查询是否最小值

    错误删除

    DELETE FROM stu WHERE name IN (SELECT name FROM stu GROUP BY name HAVING COUNT(name)>1)
    AND id NOT IN (SELECT MAX(id) FROM stu GROUP BY stu HAVING COUNT(name)>1)

    原因是:不能将直接查处来的数据当做删除数据的条件,我们应该先把查出来的数据新建一个临时表,然后再把临时表作为条件进行删除功能

    4 总结

    去重后名字记录

    SELECT `name` FROM stu GROUP BY NAME HAVING(COUNT(*) > 0)

    2)

    所有重复名字的记录

    SELECT `name` FROM stu GROUP BY NAME HAVING COUNT(*) > 1

    3)把所有重复的记录都删了

    DELETE FROM stu WHERE name IN
    (SELECT name FROM stu GROUP BY name HAVING COUNT(*)>1)

    SQL怎么删除重复数据

    无法在删除时同时查询这张表,这个问题只在MySQL中出现,oracle没有。怎么解决?我们只需要在查出结果以后加一张中间表。让执行器认为我们要查的数据不是来自正在删的这张表就可以了。

    DELETE FROM stu WHERE `name` IN     (SELECT a.name FROM         (SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(*)>1) a)

    所有重复数据都删除, 就剩王五一条数据了

    SQL怎么删除重复数据

    4) 现在删除所有重复数据数据做完了,考虑怎么保留重复数据中id最小的。只需要在删除时让删除该条的记录id不在重复数据id最小的当中就可以了。

    DELETE FROM stu WHERE `name` IN     (SELECT a.name FROM         (SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(*)>1) a)     AND id NOT IN     (SELECT b.id FROM         (SELECT MIN(id) id FROM stu             GROUP BY `name` HAVING COUNT(*)>1) b);

    SQL怎么删除重复数据

    还有简单办法 算出去重后所有数据(保留最小ID),然后删除id不在该数组里的

     DELETE FROM stu WHERE id NOT IN (SELECT t.id FROM (SELECT MIN(id) AS id FROM stu GROUP BY `name`)t)

    到此,关于“SQL怎么删除重复数据”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

    文章标题:SQL怎么删除重复数据,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/27455

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    亿速云的头像亿速云认证作者
    上一篇 2022年9月20日 上午12:23
    下一篇 2022年9月20日 下午11:53

    相关推荐

    • 如何简单绕过人机身份验证Captcha

      今天分享的Writeup是作者在目标网站漏洞测试中发现的一种简单的人机身份验证(Captcha)绕过方法,利用Chrome开发者工具对目标网站登录页面进行了简单的元素编辑就实现了Captcha绕过。 人机身份验证(Captcha)通常会出现在网站的注册、登录和密码重置页面,以下是目标网站在登录页面中…

      2022年9月15日
      3.4K00
    • 销售管理软件

      销售管理软件顾名思义就是专门管理销售人员的软件,这种管理软件在企业中是比较流行的,通过线索的精细化管理、客户分级分层管理、标准化销售流程管理,商机管理,产品价格、促销返利、订单管理、销售预测与数据分析等功能,实现线索到现金的完整业绩闭环,提升销售工作效能,驱动业绩增长,提升客户满意度。 现在无论什么…

      2022年3月24日
      69300
    • windows ventoy进不了引导如何解决

      ventoy进不了引导解决方法: 方法一: 1、首先,确保你在bios设置里将U盘设置为启动项了。 2、如果没有设置,那么重启电脑,进入bios的“boot”选项下进行设置。 方法二: 1、如果设置后还不行,那么可能是u盘问题。 2、可以尝试回到系统,右键u盘选择“格式化” 3、然后选择“NTFS格…

      2022年8月27日
      4.5K00
    • windows格式工厂如何转换视频格式

      格式工厂转换视频格式的方法 1、打开软件,进入“视频”选项下。然后在下方选择想要转换的格式。 2、接着点击“添加文件” 3、然后在文件夹中找到想要修改的视频文件,点击“打开” 4、打开后点击右下角的“确定” 5、最后最重要的一步就是点击“开始”,就可以完成视频格式转换了。 到此,关于“windows…

      2022年9月21日
      85100
    • css中设置长度的单位是什么

      css长度单位有:1、em,相对字体长度单位,它的单位长度是根据元素的文本文字垂直长度来决定的;2、rem,相对字体长度单位,只相对根元素即html元素字体大小来确定其长度;3、%,相对于父元素宽度或字体大小的百分比;4、px,像素,是相对于显示器屏幕分辨率而言的;5、vw,相对于浏览器窗口的宽度;…

      2022年9月22日
      59600
    • mysql查询视图命令是哪个

      mysql查询视图命令是“DESCRIBE”或者“SHOW CREATE VIEW”。DESCRIBE命令可以查看视图的字段信息,语法为“DESCRIBE 视图名;”,可简写为“DESC 视图名;”;而“SHOW CREATE VIEW”命令可以查看视图的详细信息,语法为“SHOW CREATE V…

      2022年9月18日
      74500
    • excel下拉列表怎么添加新内容

      excel下拉列表添加新内容的方法: 1、说先点击添加好的下拉,查看里面的内容。 2、之后选择这个下拉,点击任务栏的“数据”。 3、之后在点击下面的“数据验证”。 4、在弹出的窗口中进入设置,在“来源”中添加要新增的内容, 最后点击确定即可。 以上就是“excel下拉列表怎么添加新内容”这篇文章的所…

      2022年8月27日
      1.2K00
    • 网络协作软件有哪些

      网络协作软件有:1、BoardMix,一款轻量级的数字化多人在线实时协作软件;2、Pixso,是一款设计交付一体化协作工具软件;3、石墨文档,是一款可多人实时协作的云端offce;4、金山文档,是一款可多人实时协作的云端offce;5、Worktile,是以任务或项目管理为中心的一款协作平台;6、T…

      2022年9月13日
      1.1K00
    • word页眉横线怎么删除

      word页眉横线删除的方法: 1、首先打开进入word文档。 2、然后在word的菜单上点击“页眉页脚”。 3、随后可以看到“页眉横线”选项,点击进入。 4、最后点击“删除横线”选项即可。 关于“word页眉横线怎么删除”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“word页眉横线怎么删…

      2022年9月19日
      4.5K00
    • windows com surrogate进程表示的是什么意思

      “com surrogate”是“C:WindowsSystem32dllhost.exe”的进程;出现该进程通常是“COM+”组件停止工作,这个进程占用高甚至直接未响应,这是由于电脑在加载文件图标的时候出现问题,导致电脑变的卡顿,可以在计算机属性设置中解决卡顿问题。 本教程操作环境:windows…

      2022年9月15日
      2.6K00
    注册PingCode 在线客服
    站长微信
    站长微信
    电话联系

    400-800-1024

    工作日9:30-21:00在线

    分享本页
    返回顶部