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