oracle表中怎么去重复,Oracle里去掉表里组合字段重复的记录步骤是什么呢?
当设计表的时候没有建组合字段唯一约束,以后需要增加这一约束时,却发现表里已经有了很多重复记录了。请看看我用的去掉表里组合字段重复的记录方法:假设原始表名为source_table,字段名1为field_name1,字段名2为field_name2。
(当然稍加修改也可以用到三个及以上组合字段重复的情况)
第一步: 生成组合字段重复的临时表source_dup_simplecreate table source_dup_simplenologging pctfree 1 pctused 99 as select field_name1,field_name2,count(0) as num from source_tablegroup by field_name1,field_name2 having count(0)>1;第二步: 生成组合字段重复的主表里完整记录的临时表source_dupcreate table source_dup nologging pctfree 1 pctused 99 as select t1。
* from source_table t1,source_dup_simple t2where t1。field_name1=t2。field_name1 and t1。field_name2=t2。field_name2;第三步: 删去source_dup里的重复记录 --可选择:保留rowid小的记录delete from source_dup a where rowid > (select min(rowid) from source_dup b wherea。
field_name1 = b。field_name1 and a。field_name2=b。field_name2);commit;--可选择:保留rowid大的记录delete from source_dup a where rowid (select min(date_field) from source_dup b wherea。
field_name1 = b。field_name1 and a。field_name2=b。field_name2);
commit;
如果时间字段上有重复,还需要再次根据rowid来删一次
delete from source_dup a where rowid < (
select max(rowid) from source_dup b where
a。
field_name1 = b。field_name1 and a。field_name2=b。field_name2);
commit;
第四步: 删去所有重复组合字段原始表里记录 delete from source_table where field_name1||field_name2 in (select field_name1||field_name2 from source_dup_simple);commit;注意:如果操作一万条以上的记录最好在source_table的field_name1和field_name2字段上建索引。
第五步: 把剩下的没有重复的记录插回原始表 insert into source_table select * from source_dup;commit;。
全部
oracle表中怎么去重复,Oracle里去掉表里组合字段重复的记录步骤是什么呢?相关推荐
- oracle表中怎么去重复,oracle去掉表重复数据
今天在做项目过程中,碰到数据库表存在重复记录,显示的时候需要去掉重复的数据.想了老半天,最终用rank() over (partition by 分组字段 order by 排序字段 顺序) 解决了此 ...
- 如何向 Oracle 表中的 Date 字段插入日期及时间
如何向 Oracle 表中的 Date 字段插入日期及时间 Oracle中与sqlserver 插入日期型数据时,有比较大的区别.sqlserver中,直接把日期型数据用单引号括起来就可以,而Ora ...
- oracle找到表的位置,查看Oracle表中的指定记录在数据文件中的位置
查看Oracle表中的指定记录位置 select rowid,user_id from sshr.xx_user where user_id=3010586 select rowid, dbms_ro ...
- 查看Oracle表中的指定记录在数据文件中的位置
查看Oracle表中的指定记录位置 select rowid,user_id from sshr.xx_user where user_id=3010586 select rowid, ...
- Oracle表中数据小数写到前台是百分数显示
(Oracle表中数据小数写到前台是百分数显示)Oracle表中数据小数写到前台是百分数显示 下面
- 查询oracle表中的字段名和字段类型
查询oracle表中的字段名和字段类型 SELECT b.column_name column_name --字段名,b.data_type data_type --字段类型,b.data_lengt ...
- oracle 字段补充空格,oracle表中某个字段含有字符回车、空格的手动修改方式
select t.*, t.rowid from TB_SD_STANDARD_CHOOSE_ADVISE t where t.id =323900000 update TB_SD_STANDARD_ ...
- oracle如何插入系统时间,如何在Oracle表中插入系统时间
导读:以下的文章主要是通过实际应用代码的方式来引出向Oracle表中正确插入实际的系统时间的实际操作,希望对大家能够有所帮助. 1.SQL> insert into test values(2, ...
- oracle语句中dual什么意思,oracle中dual详解
oracle中dual详解 基本上oracle引入dual为的就是符合语法 1. 我们先从名称来说,dual不是缩写词,本身就是完整的单词.dual名词意思是对数,做形容词时是指二重的,二元的. 2. ...
最新文章
- visual studio配置第三方库
- 山石网科发布智能下一代防火墙新版本 应对未知威胁
- asp.net mvc fckeditor全攻略(补充:Controller中传值的问题)
- ActiveMQ入门系列二:入门代码实例(点对点模式)
- java 12-3 StringBuffer的添加和删除功能
- 【Python】青少年蓝桥杯_每日一题_5.15_打印 99 乘法表
- 小米登录协议分析_小米温湿度传感器协议分析
- 面试题:移动数组的元素
- C++(13)--函数的进阶:内联、传递引用、参数默认值、重载、函数模板
- TypeError: only integer scalar arrays can be converted to a scalar index
- 12位故去的国家最高科技奖得主:科学寰宇,那些永不陨落的“星”
- 写程序实现wireshark的抓包功能
- spring mvc 从Controller向页面传数据
- cad一键卸载工具叫什么_CAD专用卸载修复工具,一键完全彻底卸载删除CAD软件的专用卸载工具...
- AcWing1402. 星空之夜
- 【转】现学现用WPS,小技巧大帮助
- LaTeX tabular实现垂直居中
- 【MobaXterm教程】【公网】利用ipv6远程访问服务器
- 辐照度贴图的生成算法分析
- 测试飞机高度和速度的软件,测量飞行的高度、速度和方向
热门文章
- 如何对 Rocksdb以及类似存储引擎社区 提出 有效的性能问题?
- C++ STL: lower_bound 和 upper_bound
- ceph bluestore源码分析:C++ 获取线程id
- 《UNIX高级环境编程》 -- apue.h
- 开源工程系列之讯飞VBOX改装蓝牙5.0(aptX HD)音箱
- ucos-iii串口用信号量及环形队列中断发送,用内建消息队列中断接收
- 再谈Spring Boot中的乱码和编码问题
- 安装ATi显卡驱动后增加的鼠标右键菜单的清理
- 【C++】【七】栈的实现
- LAMP 关键数据集锦技术选项参考