美文网首页
Oracle分页查询对照

Oracle分页查询对照

作者: CokeCode | 来源:发表于2021-06-25 17:01 被阅读0次

Oracle12c以前的分页,使用rownum关键字,rownum不支持大于号,因此,

  • 查询语文成绩前十名的学生成绩信息:
select g.* from grade g where rownum <= 10 order by chinese;
  • 查询语文成绩10名以后的学生成绩信息:
select MyGrade.* 
    from (
        select G.*, rownum rn 
            from (
                select g.* from grade g order by chinese
            ) G 
    ) MyGrade
    where MyGrade.rn > 10;

注意rownum不支持大于号,因此select g.* from grade g where rownum > 10 order by chinese;是错误的,ROWNUM是一个序列,会根据sql语句自动给你加上一列排好顺序的序号列。rownum总是为满足条件的记录从1开始设序号,所以rownum总是从1开始的。这理解起来并没有问题。当从数据库中找到语文成绩第一名的记录时,设序号为1,该记录不满足rownum>10。所以抛弃该记录,接着从数据库中找到语文成绩第二名的记录,又设序号为1,该记录依然不满足rownum>10,依次类推。所以穷尽整张表抛弃了所有记录。

如果想要限定查询的上下界,如:

  • 查询语文成绩6 - 10名的学生成绩信息:
select MyGrade.*
    from (
        select G.*, rownum rn
            from (
                select g.* from grade g order by chinese
            ) G
            where rownum <= 10
    ) MyGrade
    where MyGrade.rn >= 6;

所以Oracle 12c以前的分页查询,想要表达 大于/大于等于 某些行的条件,必须在最外层进行 大于/大于等于 条件判断,rownum不支持大于号。

Oracle 12c后引入了新的分页语法:

  • 查询语文成绩前十名的学生成绩信息:
SELECT * FROM grade order by chinese fetch first 10 rows only;
  • 查询语文成绩6 - 10名的学生成绩信息:
SELECT * FROM grade order by chinese offset 5 rows fetch next 5 rows only;
  • 查询语文成绩前1%的学生成绩信息:
SELECT * FROM grade order by chinese fetch first 1 percent rows only;

相关文章

  • Oracle分页查询对照

    Oracle12c以前的分页,使用rownum关键字,rownum不支持大于号,因此, 查询语文成绩前十名的学生成...

  • 数据库分页查询

    sqlserver分页查询语句 mysql分页 oracle分页查询语句 EF Lambda Skip跳过多少条...

  • Oracle ROWNUM用法和分页查询总结

    Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用。 Oracle分页查询格式(一):http://...

  • 数据库分页查询

    今天在这里给大家分享一下oracle和mysql的两种分页查询。 oracle的分页 oracle的分页需要用到R...

  • sqlserver,oracle,mysql分页查询通用sql

    摘要: sqlserver,oracle,mysql分页查询通用sql1:mysql通用查询sql /* sql:...

  • 数据库操作(八)

    1、分页查询Oracle分页关键字:rownumMySql的分页关键字:limit 1)、rownum:伪列该列在...

  • Oracle分页查询

    因为在oracle中没有limit语句,不能像在mysql中那样用limit进行分页查询 Oracle中通过row...

  • SQL基础手册

    [TOC] 排序 ORDER BAY 合并 GROUP BY oracle分页 插入 更新 删除 查询 通配符 ...

  • oracle分页查询bug

    事件背景:在做催收系统时遇到一个问题,客户在同一天还款了6笔且金额都是10000块。但是在催收系统还款记录页面上却...

  • oracle实现分页查询

    有句一米长的SQL,当讲。 /* *@author linqiuping * firstIndex:起始索引 * ...

网友评论

      本文标题:Oracle分页查询对照

      本文链接:https://www.haomeiwen.com/subject/nueoyltx.html