MySQL删除重复行
“日暮酒醒人已远,满天风雨下西楼”
序
在数据库的操作中,经常会遇到有重复的数据,并且这些重复的行是没用的数据,需要删除。我做了一个测试表,如下:
苹果和香蕉有重复的。
删除重复行
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删除重复行相关推荐
- 温故知新MySQL--如何在MySQL表中删除重复行
2019独角兽企业重金招聘Python工程师标准>>> 如何在MySQL表中删除重复行 在实际应用中,会有需要删除重复数据的场景.这里简单介绍下如何删除重复的数据 1. 准备数据 C ...
- MySQL 如何查找删除重复行?
如何查找重复行 第一步是定义什么样的行才是重复行.多数情况下很简单:它们某一列具有相同的值.本文采用这一定义,或许你对"重复"的定义比这复杂,你需要对sql做些修改.本文要用到的数 ...
- MySQL 如何查找并删除重复行
如何查找重复行 第一步是定义什么样的行才是重复行.多数情况下很简单:它们某一列具有相同的值.本文采用这一定义,或许你对"重复"的定义比这复杂,你需要对sql做些修改.本文要用到的数 ...
- mysql sql 去除重复行_mysql – sql自连接表删除重复行
我有下表: ╔════════╦════════════╗ ║ USERID ║ LANGUAGEID ║ ╠════════╬════════════╣ ║ 1 ║ 2 ║ ║ 1 ║ 7 ║ ║ ...
- datagrid如何获取一行数据中的某个字段值_MySQL 如何查找删除重复行?
如何查找重复行 第一步是定义什么样的行才是重复行.多数情况下很简单:它们某一列具有相同的值.本文采用这一定义,或许你对"重复"的定义比这复杂,你需要对sql做些修改.本文要用到的数 ...
- mysql消除重复行的关键字_MySQL 消除重复行的一些方法
/* MySQL 消除重复行的一些方法 ---Chu Minfei ---2010-08-12 22:49:44.660 --引用转载请注明出处:http://blog.csdn.NET/feixia ...
- mysql删除重复记录语句的方法 作者: 字体:[增加 减小] 类型:转载 时间:2010-06-21 我要评论 查询及删除重复记录的SQL语句,虽然有点乱,但内容还是不错的。 . .
mysql删除重复记录语句的方法 作者: 字体:[增加 减小] 类型:转载 时间:2010-06-21 我要评论 查询及删除重复记录的SQL语句,虽然有点乱,但内容还是不错的. 例如: id name ...
- SQL:查找或删除重复行
本文讲述如何查找数据库里重复的行.这是初学者十分普遍遇到的问题.方法也很简单.这个问题还可以有其他演变,例如,如何查找"两字段重复的行"(#mysql IRC 频道最近问到的问题) ...
- pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行、并设置keep参数保留重复行中的最后一个数据行
pandas使用drop_duplicates函数基于subset参数指定的数据列子集删除重复行.并设置keep参数保留重复行中的最后一个数据行 目录
最新文章
- 76.Zabbix添加图形和聚合图形
- Hanlder Looper MessageQueue Message
- CodeForces - 731D 80-th Level Archeology(线段树+暴力/差分)
- php中id如何与删除关联,ThinkPHP查询语句与关联查询用法实例
- php获取xml中的数据格式_php-从xml文件获取数据
- 菜鸟赛季之------第221天...
- 阿里云罗庆超:我为什么写《对象存储实战指南》这本书
- 计算机网络比特是什么,计算机网络
- c# 条件编译 Conditional (DEBUG)
- SoberGGG对针式PKM的初次测评
- Java学完哪些内容能够出去找工作
- Lenovo笔记本BIOS详解
- 《数字孪生》(Yanlz+VR元宇宙+Unity+SteamVR+云技术+5G+AI+虚拟现实+数字映射+仿真+物理模型+传感器更新+运动历史+多学科+多物理量+多尺度+多概率+立钻哥哥++==)
- 乐高打印机robotc
- 完美结合,10款提升编程能力的游戏项目
- java生成二维码合成背景图
- VS2012中的R6002 - floating point support not loaded错误
- C++ 获取个位数十位数等
- C 常數0L,0LL,0UL,0.0f,0.0L
- QPushButton 实现保持按下效果(转载​​)