Oracle 查找与删除表中重复记录的步骤方法
insert into cfa values (1,'Albert','SCB','2011-11-11');WHERE t.ROWID > (SELECT MIN(X.ROWID)
b情况,删除表中多余的重复记录(多个字段),只留有rowid最小的记录
select * from cfa where (businessid,customer,branchcode,data_date) in (select * from cfa group by businessid,customer,branchcode,data_date having count(*)>1);c情况,这种情况就比较简单,使用临时表方法
复制代码 代码如下:
a.重复一个字段
create table cfa (businessid number,customer varchar2(50),branchcode varchar2(10),data_date varchar2(10));
delete from cfa
复制代码 代码如下:
1、查询表中的重复数据
b.重复多个字段
复制代码 代码如下:
对于a的情况,只有businessid重复
复制代码 代码如下:
方法:group by XX having count(*)>1,rowid,distinct,temporary table,procedure
and rowid not in (select min(rowid)truncate table cfa;--如果是生产最好对该表backup
复制代码 代码如下:
insert into cfa values (1,'Alex','ICBC','2011-11-14');
复制代码 代码如下:
复制代码 代码如下:
或者,使用下面更简单高效的语句
也可以只保留rowid不是最小记录,需要把代码中的min改为max这里不再赘述。
或者,使用下面更简单高效的语句(SELECT MIN(X.ROWID) FROM cfa X WHERE X.businessid = t.businessid);select * from cfa where businessid in (select businessid from cfa group by businessid having count(businessid)>1);
2、删除表中的重复数据
delete from cfa
这时候如果临时表中有重复数据,无论是主键字段businessid有重复,还是一整行有重复都会报出违反唯一主键约束错误。
from cfainsert into cfa values (1,'Albert','CTBK','2011-11-15');
对于c的情况,重复一整行from cfa
如果是b的情况,businessid 和name同时存在重复
and x.customer = t.customer);
复制代码 代码如下:
group by businessid,customer创建测试表:
group by businessidinsert into cfa values (1,'Albert','SCB','2011-11-11');
复制代码 代码如下:
WHERE X.businessid = t.businessidcreate table cfabak as select distinct * from cfa;
---------------以下为重复数据----------------------------------------------
group by businessid
having count(*) > 1);
参考b的方法:
having count(businessid) > 1)
Insert into cfa select * from cfabak;
DELETE FROM cfa tc.重复一整行
commit;
select * from cfa where (businessid,customer) in (select businessid,customer from cfa group by businessid,customer having count(*)>1);
DELETE FROM cfa t
insert into cfa values (2,'Andy','DB','2011-11-12');
having count(businessid) > 1);WHERE t.ROWID >
where businessid in (select businessid
FROM cfa X
insert into cfa values (3,'Allen','HSBC','2011-11-13');
and rowid not in (select min(rowid)
having count(*) > 1)
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/sql/oracle/3610.shtml
相关文章
热门TAG
命令 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 技巧 权重 服务器 网站流量 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows 蜘蛛 搜索引擎 网站收录 JSP 实例解析最新文章
-
OracleRAC的五大优势及其劣
时间:2021-01-05
-
Oracle优化器 自适应执行计
时间:2021-01-05
-
Oracle行内链接不会引起U
时间:2021-01-05
-
Window下Oracle Database 11g 发行
时间:2020-12-29
-
Oracle如何实现like多个值的
时间:2020-12-29
-
maven添加oracle依赖失败问题
时间:2020-12-29
-
OracleRAC基本概念及入门
时间:2020-12-29
-
Azure File Storage 基本用法
时间:2020-12-26
热门文章
-
Azure Queue Storage 基本用法 Azure Storage 之
时间:2020-12-26
-
Oracle存储过程编程详解
时间:2020-12-07
-
win10下oracle 11g安装图文教程
时间:2020-12-25
-
oracle 数据库学习 基本结构介绍
时间:2020-12-13
-
Azure File Storage 基本用法 Azure Storage 之 F
时间:2020-12-26
-
windows使用sqlpus连接oracle 数据库的教程图
时间:2020-12-25
-
Window下Oracle Database 11g 发行版2安装教程
时间:2020-12-29
-
Oracle解锁的方式介绍
时间:2020-12-14
-
linux下oracle设置开机自启动实现方法
时间:2020-12-13
-
Oracle学习记录之使用自定义函数和触发器
时间:2020-12-07
