删除重复记录的方法

有时候表中会有一些重复的数据,造成统计上的麻烦,需要删除它。整理出删除重复记录的方法
1首先建立表
create table TEST
(
MESSAGEID NUMBER(38) not null,
CREATIONDATE CHAR(15) not null,
MESSAGESIZE NUMBER(38) not null,
ID NUMBER(5) default 0 not null
)

2.制一些重复记录

3 删除
下面具体介绍删除操作
1.ORACLE 中的ROWID(唯一标示记录),可以根据ROWID的方法把重复记录删除
sql
先查询出重复记录
 select *
from test
where rowid in (select a.rowid
from test a, test b
where a.rowid > b.rowid
and a.messageid = b.messageid)

确定需要删除记录
删除
delete from test where rowid in (select a.rowid
from test a, test b
where a.rowid > b.rowid
and a.messageid = b.messageid)

2.用分组查询出重复记录
先查询出重复记录
select *
from test
where id not in
(select min(id) from test group by messageid having count(*) > 1)

确定需要删除记录
删除
delete from (
select * from test where id not in
(select min(id) from test group by messageid having count(*) > 1))


分组删除性能很低,介意不要使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值