ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 抽取随机记录和重复记录

抽取随机记录和重复记录

原创 Linux操作系统 作者:xhailiang 时间:2006-10-02 00:00:00 0 删除 编辑
随机抽取前N条记录的问题
[A]8i以上版本
select * from (select * from tablename order by sys_guid()) where rownum < N;
select * from (select * from tablename order by dbms_random.value) where rownum< N;
注:dbms_random包需要手工安装,位于$ORACLE_HOME/rdbms/admin/dbmsrand.sql
dbms_random.value(100,200)可以产生100到200范围的随机数

抽取从N行到M行的记录,如从20行到30行的记录
[A]select * from (select rownum id,t.* from table) where id between N and M;

怎么样抽取重复记录
[A]select * from table t1 where where t1.rowed !=
(select max(rowed) from table t2
where t1.id=t2.id and t1.name=t2.name)
或者
select count(*), t.col_a,t.col_b from table t
group by col_a,col_b
having count(*)>1
如果想删除重复记录,可以把第一个语句的select替换为delete

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/308563/viewspace-171875/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-02-17

  • 博文量
    270
  • 访问量
    415295