当前位置: 首页 > news >正文

rowid去重(删除表的重复记录)

-- 构造测试环境
SQL> create table andy(id int,name varchar2(10));
Table created.
SQL>
insert into andy values(1,'a');
insert into andy values(2,'b');
insert into andy values(3,'c');
insert into andy values(4,'d');
SQL> select * from andy;

ID NAME
---------- ----------
1 a
2 b
3 c
4 d
4 rows selected.
SQL>
insert into andy values(4,'f');
insert into andy values(4,'d');

SQL> select * from andy;
ID NAME
---------- ----------
1 a
2 b
3 c
4 d
4 f
4 d
6 rows selected.
-- 依次group by 表所有字段,通过min(rowid)查看所有唯一记录(去重记录,也就是相同多行数据只显示一行)
SQL> select id,name,min(rowid)
from andy
group by id,name;
ID NAME MIN(ROWID)
---------- ---------- ------------------
3 c AAAfKTAAEAAACr/AAC
4 d AAAfKTAAEAAACr/AAD
4 f AAAfKTAAEAAACr/AAJ
1 a AAAfKTAAEAAACr/AAA
2 b AAAfKTAAEAAACr/AAB
-- delete 重复数据时,group by 表的个别字段,发现误删除
SQL> delete from andy
where rowid not in (
select min(rowid)
from andy
group by id);
2 rows deleted.
说明:记录 4 f 被误删。
SQL> select * from andy;

ID NAME
---------- ----------
1 a
2 b
3 c
4 d
-- 构造与上面测试相同环境,即插入刚删除的数据
SQL>
insert into andy values(4,'f');
insert into andy values(4,'d');
SQL> select * from andy;
ID NAME
---------- ----------
1 a
2 b
3 c
4 d
4 f
4 d
6 rows selected.
-- 依次group by 表所有字段,通过min(rowid)查看所有唯一记录(去重记录,也就是相同多行数据只显示一行)
SQL> select id,name,min(rowid)
from andy
group by id,name;
ID NAME MIN(ROWID)
---------- ---------- ------------------
3 c AAAfKTAAEAAACr/AAC
4 d AAAfKTAAEAAACr/AAD
4 f AAAfKTAAEAAACr/AAL
1 a AAAfKTAAEAAACr/AAA
2 b AAAfKTAAEAAACr/AAB
-- delete 重复数据时,group by 表的所有字段,发现没有误删。
SQL> delete from andy
where rowid not in (
select min(rowid)
from andy
group by id,name);
1 row deleted.
-- 检查去重后的数据,发现没有误删
SQL> select * from andy;
ID NAME
---------- ----------
1 a
2 b
3 c
4 d
4 f
说明:
如果想通过rowid去重,那么在 delete 重复数据时,需要group by 表的所有字段。如果只group by 表的个别字段,那么会造成误删除。

转载于:https://www.cnblogs.com/andy6/p/6900926.html

相关文章:

  • 完整的solr java api操作代码块
  • scala 学习笔记--闭了个包
  • JavaScript使用正則表達式
  • Java 修改页面排序条件
  • Redis3.x HA 方案(基于 Sentinel 方式)
  • android自带的处理Bitmap out Memory 的处理,我仅仅是改变了些写法成为自己用的东西...
  • 卫星宽带
  • Tomcat Manager用户名和密码
  • 《嵌入式系统可靠性设计技术及案例解析》读书笔记(四)
  • POJ 1700 经典过河问题(贪心)
  • 猴子 JDFZ模拟赛
  • 从输入URL到页面加载发生了什么
  • Filter配置多个url-pattern
  • 单元测试初入
  • Django 博客开发教程 10 - 页面侧边栏:使用自定义模板标签
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • “大数据应用场景”之隔壁老王(连载四)
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • Android单元测试 - 几个重要问题
  • C++类中的特殊成员函数
  • css选择器
  • FineReport中如何实现自动滚屏效果
  • js ES6 求数组的交集,并集,还有差集
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • React Transition Group -- Transition 组件
  • springboot_database项目介绍
  • 关于springcloud Gateway中的限流
  • 看域名解析域名安全对SEO的影响
  • 目录与文件属性:编写ls
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 听说你叫Java(二)–Servlet请求
  • 一个SAP顾问在美国的这些年
  • 优化 Vue 项目编译文件大小
  • 原生 js 实现移动端 Touch 滑动反弹
  • 原生js练习题---第五课
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 国内开源镜像站点
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #pragma multi_compile #pragma shader_feature
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (Note)C++中的继承方式
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (办公)springboot配置aop处理请求.
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (离散数学)逻辑连接词
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)关于多人操作数据的处理策略
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .Net 垃圾回收机制原理(二)