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

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

/ 猿问

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

HUWWW 2019-12-02 10:57:48

如何返回特定范围的ROWNUM值?


我正在尝试以下方法:


select * from maps006 where rownum >49 and rownum <101

这仅返回与<运算符匹配的行。



查看完整描述

3 回答

?
慕斯王

 SELECT * from

 (

 select m.*, rownum r

 from maps006 m

 )

 where r > 49 and r < 101


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

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
?
当年话下

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


从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

添加回答

回复

举报

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