oracle 删除表中重复记录
delete t1 where rowid in
(
select rowid
from (
select row_Number() over(partition by t1.asset_code order by t1.asset_code) xh,t1.rowid
from t1
) where xh>1
)
解释一下,两个知识点:
1,rowid,此为伪列,每个表在创建的时候都会自动创建此列,rowid是存储每条记录的实际物理地址,对记录的访问是基于ROWID。
对数据库中记录行的作快检索方式就是使用rowid来进行查找
2, row_Number() over() 函数的用法