DBA day day up
自我介绍
切换风格
订阅我的Blog
博客日历
文章归档...
最新发表...
博客统计...
网站链接...
资源
===========================================================
非常有效删除重复行
===========================================================

EXP:

select line,value,k0 from kk

1 10 A
1 10 A
1 10 A
3 31 B
3 31 B
1 10 A
1 10 A
1 10 A
3 31 B
3 31 B

解决快速的语句:

delete from kk a where a.rowid NOT in(select max(b.rowid) from kk b

where a.line=b.line and a.value=b.value and a.k0=b.k0)

----------------------------------------------------------------

如果表的列数少的,这个语句就好用!

利用分析函数:


delete from kk where rowid in(
select row_id from (
select rowid row_id,row_number() over(partition by line,k0,value order by rowid ) rn from kk
) where rn<>1)

RESULT:

1 1 10 A
2 2 40 B
3 3 31 B
4 1 22 A
5 1 31 B


----------------------------------------------------------------

根据网友的提示改了

那个地方应该为not in

cosio 发表于:2008.07.23 22:23 ::分类: ( DBA学习 ) ::阅读:(445次) :: 评论 (1) :: 引用 (0)
楼主弄错了 [回复]

第一个删除语句应该是 not in 不是 in

dmeonhqm 评论于:2008.07.24 13:42

发表评论
标题

在此添加评论

称呼

邮箱地址(可选)

个人主页(可选)