为了账号安全,请及时绑定邮箱和手机立即绑定

SQL ROWNUM如何返回特定范围之间的行

SQL ROWNUM如何返回特定范围之间的行

HUWWW 2019-12-02 10:57:48
如何返回特定范围的ROWNUM值?我正在尝试以下方法:select * from maps006 where rownum >49 and rownum <101这仅返回与<运算符匹配的行。
查看完整描述

3 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

 SELECT * from

 (

 select m.*, rownum r

 from maps006 m

 )

 where r > 49 and r < 101


查看完整回答
反对 回复 2019-12-02
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

SELECT  *

FROM    (

        SELECT  q.*, rownum rn

        FROM    (

                SELECT  *

                FROM    maps006

                ORDER BY

                        id

                ) q

        )

WHERE   rn BETWEEN 50 AND 100

请注意双嵌套视图。ROWNUM在之前评估ORDER BY,因此需要正确编号。


如果省略ORDER BY子句,则不会获得一致的顺序。


查看完整回答
反对 回复 2019-12-02
?
当年话下

TA贡献1890条经验 获得超9个赞

我知道这是一个老问题,但是在最新版本中提及新功能很有用。


从Oracle 12c开始,您可以使用新的Top-n Row限制功能。无需编写子查询,不依赖于ROWNUM。


例如,以下查询将按升序返回员工的最高薪水到第4高薪至第7高薪:


SQL> SELECT empno, sal

  2  FROM   emp

  3  ORDER BY sal

  4  OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY;


     EMPNO        SAL

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

      7654       1250

      7934       1300

      7844       1500

      7499       1600


SQL>


查看完整回答
反对 回复 2019-12-02
  • 3 回答
  • 0 关注
  • 1066 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信