随笔-204  评论-90  文章-8  trackbacks-0

delete   from  t_number;

以下表为例:

create   table  t_number(
  ID       
NUMBER   not   null ,
  USERNAME 
VARCHAR2 ( 30 ),
  MOBILE   
VARCHAR2 ( 30 ),
  OPRCODE  
VARCHAR2 ( 2 ),
  INSDATE  DATE
)

一、记录中部分字段重复:
delete from t_number a 
where a.rowid != (select max(b.rowid) 
                  
from t_number b 
                  
where a.mobile = b.mobile);

在oracle中,有个隐藏了自动rowid,里面给每条记录一个唯一的rowid,我们如果想保留最新最旧的一条记录, 我们就可以利用这个字段,保留重复数据中rowid最大或最小的一条记录就可以了

二、记录中各字段内容完全相同的情况
先创建临时表:

CREATE TABLE t_number_tmp AS (select distinct * from t_number);

清除原表
delete from t_number;

将临时表的数据导入原表
insert into t_number (select * from t_number_tmp);

删除临时表
drop tablet_number_tmp;


 

posted on 2006-12-04 16:01 一凡 阅读(327) 评论(0)  编辑  收藏 所属分类: DATABASE

只有注册用户登录后才能发表评论。


网站导航: