Oracle分页查询的三种方法

  Oracle分页查询的三种方法大至如下所示:


    1. 采用伪列 rownum

    查询前10条记录

    [sql]

    select * from t_user t where ROWNUM <10;

    按照学生ID排名,抓取前三条记录

    [java]

    SELECT * FROM(SELECT id,realname FROM T_USER ORDER BY id asc ) WHERE ROWNUM <=3

    分页SQL写法,从第10条记录开始,提取10条记录。

    [java]

    SELECT * FROM (SELECT ROWNUM rn,id,realname FROM (SELECT id,realname FROM T_USER)WHERE ROWNUM<=20) t2 WHERE T2.rn >=10;

    按照学生ID排名,从第10条记录开始,提取10条记录。

    [sql]

    SELECT * FROM (SELECT ROWNUM rn,id,realname FROM (SELECT id,realname FROM T_USER ORDER BY id asc)WHERE ROWNUM<=20) t2 WHERE T2.rn >=10;

    【注】

    1. where rownum>1 不能抓取到记录。

    2. where rownum between 2 and 10 也不能抓取到记录。


    2. 运用分析函数

    用分析函数row_number()over(ORDER BY 字段)

    按照学生ID排名,抓取前三条记录

    [sql]

    SELECT * FROM(SELECT id,realname,row_number()over(ORDER BY id asc) rn FROM T_USER)WHERE rn <=3

    按照学生ID排名,从第10条记录开始,提取10条记录。

    [sql]

    SELECT * FROM(SELECT id,realname,row_number()over(ORDER BY id asc) rn FROM T_USER)WHERE rn BETWEEN 10 AND 20;


    3. 运用minus方法

    从第10条记录开始,提取10条记录。

    [java]

    SELECT * FROM T_USER WHERE ROWNUM<20 MINUS SELECT * FROM T_USER WHERE ROWNUM<10;

    按ID排序后,从第10条记录开始,提取10条记录。

    [sql]

    (SELECT * FROM (SELECT * FROM T_USER ORDER BY id asc) WHERE ROWNUM<20)  MINUS( SELECT * FROM 

    (SELECT * FROM T_USER ORDER BY id asc)        WHERE ROWNUM<10);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值