修改或删除重复行

2011-11-28  黄桂梅 

————oracle部分——————————————————————————————————
修改或删除重复的一行或者多行,可以借助rowid进行;
因为在表中的每一行数据都有一个唯一的rowid号,这个rowid号是可以用select语句查询出来的。

——查询对应的rowid:
select a.rowid,a.*  from kpi_monthly a
根据rowid修改指定数据:
update kpi_monthly set kpi_date=20111128 where rowid='AAARiBAAEAAEvDeAAA'

——查看有无存在重复数据:
select max(id) from test01 a group by a.name having count(*)>1;

——删除重复行:
delete from test01 a where rowid >
        (
        select min(rowid) from test01 b
        where a.name=b.name
   );
——删除重复数据:
DELETE
  FROM table1
 WHERE id IN (SELECT id
                    FROM table1
                   GROUP BY id
                  HAVING COUNT(id) > 1)
   AND ROWID NOT IN (SELECT MIN(ROWID)
                       FROM table1
                      GROUP BY id
                     HAVING COUNT(id) > 1)

————sql server部分——————————————————————————————————

Sql server删除重复数据可以分为三个步骤:

一、将非重复数据存储到暂存数据表中

二、将原数据表清空

三、将非重复的数据复制到原始数据表中

select distinct ida,number,name

        into #table02

        from table01;

truncate table table01;

insert into table01(ida,number,name)

        select ida,number,name

        from #table01;




412°/4124 人阅读/0 条评论 发表评论

登录 后发表评论