使用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.pname=b.pname);

(2)使用group by方法

查询重复数据:select * from person where cardid in (select cardid from person group by cardid having count(cardid)>1);

     删除重复数据:delete from person where cardid in (select cardid from person group by cardid having count(cardid)>1) and rowid not in (select min(rowid) from person                                group by cardid having count(cardid)>1);

原文地址:https://www.cnblogs.com/hongwei2085/p/8850300.html

时间: 2024-08-28 05:38:41

使用oracle删除表中重复记录的相关文章

删除表中重复记录大于两条保存两条

--删除表中重复记录大于两条保存两条delete from t_Cht_clm_reg F where F.case_id in (select T.case_id from (select B.* from (select e.* , row_number() over (partition by e.notice_id order by e.case_id desc) rn from t_Cht_clm_reg e) B where B.notice_id in(select A.notic

SqlServer删除表中重复记录

重复记录:有两个意义上的重复记录 一是完全重复的记录,也即所有字段均重复的记录: 二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略. 1.对于第一种重复,比较容易解决,使用 1 select distinct * from tableName 就可以得到无重复记录的结果集. 如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除 1 --查询无重复记录的结果集,并将结果集保存到临时表#Tmp 2 select distinct * into #T

删除表中重复记录

create table myTable1(id int primary key identity,col1 int,col2 int) DECLARE @i int;set @i=0;WHILE @i<10 BEGIN INSERT INTO myTable1 VALUES(@i,@i); INSERT INTO myTable1 VALUES(@i,@i); SET @i+=1; End --找到重复的记录SELECT col1,col2 from myTable1 GROUP BY col

SQL 删除表中重复记录只剩一条

今天不小心插入数据时插入重复了 这表中没有任何主键外键,随便插入或删除 网上查了很多复杂的语句都没有解决问题 最后用delete top (1) 解决问题 delete top (1) from Persion where name = 'xiaomin' 也可以用 update top (1) from person where name ='xxxx' delete from person where name = 'xxxx' 没那么复杂

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

SQL语句删除表中所有记录的方法

如何用一条sql语句删除表中的所有记录,这里分享下我的方法.参考链接: sql语句如何删除重复记录?四种方法 sql语句如何删除重复记录?教程详解 TRUNCATE TABLE删除表中的所有行,而不记录单个行删除操作. 语法TRUNCATE TABLE name 参数name 是要截断的表的名称或要删除其全部行的表的名称. 注释TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 DELETE 速度

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);

SQL DELETE 语句:删除表中的记录语法及案例剖析

SQL DELETE 语句 DELETE 语句用于删除表中的记录. SQL DELETE 语句 DELETE 语句用于删除表中的行. SQL DELETE 语法 DELETE FROM table_name WHERE some_column=some_value; 请注意 SQL DELETE 语句中的 WHERE 子句! WHERE 子句规定哪条记录或者哪些记录需要删除.如果您省略了 WHERE 子句,所有的记录都将被删除! 演示数据库 在本教程中,我们将使用 样本数据库. 下面是选自 "W

【ORACLE】删除表中重复数据

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