【Oracle】去除表中重复的数据

删除表重复数据 (t1表中有重复数据)
1、使用distinct
create table t2 as select * from t1;
create table tmp_t2 as select distinct * from t2;
drop table t2;alter table tmp_t2 rename to t2(需停业务)

------------------------------------------------------------------------------------
2、使用ROWID

delete from t1
where rowid <>( select min(rowid)
from t1 b
where b.c1 = t1.c1
and b.c2 = t1.c2 )

------------------------------------------------------------------------------------
3、用rowid + group by 的方法
delete from t1
where rowid not in (select min(rowid)
from t1 group by c1,c2 );

------------------------------------------------------------------------------------
4.使用分析函数
delete from t1 where rowid not in
(select b.rd from
(select rowid rd,row_number() over(partition by c1,c2 order by c1) rn
from t1) b
where b.rn = 1);

------------------------------------------------------------------------------------
5.使用EXISTS

delete from t1
where not exists (select 1 from (select min(rowid) rid from t1 group by c1,c2) b where b.rid=t1.rowid);

时间: 2024-07-31 00:38:46

【Oracle】去除表中重复的数据的相关文章

oracle数据库表中,插入数据的时候如何产生一个 字母+数字 编号?

Oracle 语句中"||"代表什么啊? oracle数据库表中,插入数据的时候如何产生一个 字母+数字 编号? 排序的话,用order by来处理即可.比如:cola123a234b999b335select * from tablename order by col; 结果就是 cola123a234b335b999 如果按倒序排列:select * from tablename order by col desc; 结果就是 colb999b335a234a123 其他回答 先创

把表中重复的数据删掉 保留一行 表的顺序自动更新!

create table orders ( company varchar(10), ordernumber int ) insert into orders select 'IBM',4566 union all select 'JIS',4565 union all select 'JOINY',4544 union all select 'JOINY',4544 union all select 'JOINY',4544 union all select 'EWIRU',2321 unio

使用oracle删除表中重复记录

(1)使用用rowid方法 查询重复数据:select * from person a where rowid !=(select max(rowid) from person b where a.cardid=b.cardid and a.pname=b.pname);        删除重复数据:delete from person a where rowid !=(select max(rowid) from person b where a.cardid=b.cardid and a.p

数据库处理表中重复数据方法

--查询表中重复数据 select * from 表名 t where t.id in ( SELECT id FROM 表名 GROUP BY id HAVING COUNT(主键编号)>1 ); --去除表中重复数据 delete from 表名 a where rowid not in ( select max(b.rowid) from 表名 b where a.主键编号 = b.主键编号 );数据库处理表中重复数据方法,布布扣,bubuko.com

sqlite 删除表中重复数据(亲测可用)

例子:表名  Paper .通过字段PaperID查找重复数据. 1 --查询某表中重复的数据       select * from Paper group by PaperID having count(*)>1; 2--删除重复行数,只剩不重复的记录(rowid为sqlite自带字段)      delete from Paper where Paper.rowid not in (select MAX(Paper.rowid) from Paper group by PaperID);

Oracle 数据库表中已有重复数据添加唯一键(唯一约束)

Oracle 数据库表中已有重复数据添加唯一键(唯一约束) 问题描述 以 demo 举例,模拟真实场景. 表 TEST_TABLE 有如下字段和数据:id 是主键,code 没有设置键和索引 ID CODE 1 code1 2 code2 3 code2 4 code2 5 code3 通过以上表中数据可以看出 code 是有重复数据的,此时如果我们直接添加唯一键,会报错. 通过 PL/SQL 可视化操作,或者通过 SQL 语句添加(ENABLE NOVALIDATE 的作用是约束新增数据但不会

【ORACLE】删除表中重复数据

原因 在对数据库进行操作过程中我们可能会遇到这种情况,表中的数据可能重复出现,使我们对数据库的操作过程中带来读诸多不便,那么怎么删除这些重复没有用的数据呢? 平时工作中可能会遇到当试图对库表中的某一列或几列创建唯一索引时,系统提示 ORA-01452 :不能创建唯一索引,发现重复记录. 处理方法 重复的数据可能有这样两种情况: 第一种:删除表中所有重复的数据 第二种:只保留重复数据中最新记录的一条记录[工作中常用] 删除重复数据的想法 每一行数据所对应的rowid都是独一无二的,及时表中两个数据

Sql Server删除数据表中重复记录 三种方法

本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1.生成一张临时表new_users,表结构与users表一样:2.对users表按id做一个循环,每从users表中读出一个条记录,判断new_users中是否存在有相同的u_name,如果没有,则把它插入新表:如果已经有了相同的项,则忽略此条记录:3.把users表改为其它的名称,把new_use

关于iOS去除数组中重复数据的几种方法

关于iOS去除数组中重复数据的几种方法 在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方法 可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的.代码: NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-