“日暮酒醒人已远,满天风雨下西楼”

在数据库的操作中,经常会遇到有重复的数据,并且这些重复的行是没用的数据,需要删除。我做了一个测试表,如下:

苹果和香蕉有重复的。

删除重复行

1. 使用not in 删除重复行,SQL语句如下:

DELETE FROM fruit_test
WHERE id NOT IN (SELECT MAX(id) as id
FROM fruit_test
GROUP BY name, price);

这里是根据名称和价格分组,拿到不重复数据的最大ID值,然后删除不在这最大ID值的行,即可删除重复行。如果该句MySQL中执行会出现You can't specify target table 'fruit_test' for update in FROM clause错误,如下:

该问题也好解决,把not in 里面的SQL再嵌套一层即可:

DELETE FROM fruit_test
WHERE id NOT IN (
select id from (SELECT MAX(id) as id  -- 嵌套一层已解决上面的报错
FROM fruit_test
GROUP BY name, price) a);

该方法的好处是,主流的数据库都支持这种语法。

2. 使用EXCEPT删除重复行
如果你使用的是SqlServer数据库,那么可以使用EXCEPT减去要留下的数据,SQL如下:

DELETE FROM fruit_test
WHERE id IN ( SELECT id -- 全部 rowid
FROM fruit_test
EXCEPT -- 减去
SELECT MAX(id) -- 要留下的 rowid
FROM fruit_test
GROUP BY name, price) ;

3. 使用minus删除重复行
minus和EXCEPT效果一样,只是EXCEPT用在sqlserver,minus用在oracle。SQL语句如下:

DELETE FROM fruit_test
WHERE id IN ( SELECT id
FROM fruit_test
minus
SELECT MAX(id)
FROM fruit_test
GROUP BY name, price) ;

MySQL删除重复行相关推荐

  1. 温故知新MySQL--如何在MySQL表中删除重复行

    2019独角兽企业重金招聘Python工程师标准>>> 如何在MySQL表中删除重复行 在实际应用中,会有需要删除重复数据的场景.这里简单介绍下如何删除重复的数据 1. 准备数据 C ...

  2. MySQL 如何查找删除重复行?

    如何查找重复行 第一步是定义什么样的行才是重复行.多数情况下很简单:它们某一列具有相同的值.本文采用这一定义,或许你对"重复"的定义比这复杂,你需要对sql做些修改.本文要用到的数 ...

  3. MySQL 如何查找并删除重复行

    如何查找重复行 第一步是定义什么样的行才是重复行.多数情况下很简单:它们某一列具有相同的值.本文采用这一定义,或许你对"重复"的定义比这复杂,你需要对sql做些修改.本文要用到的数 ...

  4. mysql sql 去除重复行_mysql – sql自连接表删除重复行

    我有下表: ╔════════╦════════════╗ ║ USERID ║ LANGUAGEID ║ ╠════════╬════════════╣ ║ 1 ║ 2 ║ ║ 1 ║ 7 ║ ║ ...

  5. datagrid如何获取一行数据中的某个字段值_MySQL 如何查找删除重复行?

    如何查找重复行 第一步是定义什么样的行才是重复行.多数情况下很简单:它们某一列具有相同的值.本文采用这一定义,或许你对"重复"的定义比这复杂,你需要对sql做些修改.本文要用到的数 ...

  6. mysql消除重复行的关键字_MySQL 消除重复行的一些方法

    /* MySQL 消除重复行的一些方法 ---Chu Minfei ---2010-08-12 22:49:44.660 --引用转载请注明出处:http://blog.csdn.NET/feixia ...

  7. mysql删除重复记录语句的方法 作者: 字体:[增加 减小] 类型:转载 时间:2010-06-21 我要评论 查询及删除重复记录的SQL语句,虽然有点乱,但内容还是不错的。 . .

    mysql删除重复记录语句的方法 作者: 字体:[增加 减小] 类型:转载 时间:2010-06-21 我要评论 查询及删除重复记录的SQL语句,虽然有点乱,但内容还是不错的. 例如: id name ...

  8. SQL:查找或删除重复行

    本文讲述如何查找数据库里重复的行.这是初学者十分普遍遇到的问题.方法也很简单.这个问题还可以有其他演变,例如,如何查找"两字段重复的行"(#mysql IRC 频道最近问到的问题) ...

  9. pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行、并设置keep参数保留重复行中的最后一个数据行

    pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行.并设置keep参数保留重复行中的最后一个数据行 目录

最新文章

  1. 76.Zabbix添加图形和聚合图形
  2. Hanlder Looper MessageQueue Message
  3. CodeForces - 731D 80-th Level Archeology(线段树+暴力/差分)
  4. php中id如何与删除关联,ThinkPHP查询语句与关联查询用法实例
  5. php获取xml中的数据格式_php-从xml文件获取数据
  6. 菜鸟赛季之------第221天...
  7. 阿里云罗庆超:我为什么写《对象存储实战指南》这本书
  8. 计算机网络比特是什么,计算机网络
  9. c# 条件编译 Conditional (DEBUG)
  10. SoberGGG对针式PKM的初次测评
  11. Java学完哪些内容能够出去找工作
  12. Lenovo笔记本BIOS详解
  13. 《数字孪生》(Yanlz+VR元宇宙+Unity+SteamVR+云技术+5G+AI+虚拟现实+数字映射+仿真+物理模型+传感器更新+运动历史+多学科+多物理量+多尺度+多概率+立钻哥哥++==)
  14. 乐高打印机robotc
  15. 完美结合,10款提升编程能力的游戏项目
  16. java生成二维码合成背景图
  17. VS2012中的R6002 - floating point support not loaded错误
  18. C++ 获取个位数十位数等
  19. C 常數0L,0LL,0UL,0.0f,0.0L
  20. QPushButton 实现保持按下效果(转载​​)

热门文章

  1. Kali-密码生成工具-crunch
  2. 基于微信小程序的火锅店点餐系统小程序
  3. 斜齿轮、圆锥齿轮、蜗轮蜗杆的旋向(螺旋线方向)、转向、圆周力、径向力、轴向力等的方向判断【小记】
  4. 命令行工具集合busybox编译
  5. source deactivate xxx:bash deactivate:没有那个文件或目录
  6. 在 BSV 上创建你的第一个零知识证明程序
  7. SAP已用信贷额度计算
  8. 他们说的局域网,广域网,外网,内网是什么
  9. 免费在线app安全(漏洞)测试工具
  10. 拼题A 基础篇13 查询水果价格