SQL(ORACLE):ORDER BY和LIMIT
我想要通过财产所有数据在我的数据库sorting,只有后使用LIMIT和OFFSET。
像这样的查询:
SELECT select_list FROM table_expression [ ORDER BY ... ] [ LIMIT { number | ALL } ] [ OFFSET number ]
我知道sorting结束,只要它findsorting结果的第一个row_count行。 在调用LIMIT和OFFSET之前,我可以对所有数据进行sorting吗?
在12.1之前,Oracle不支持LIMIT
或OFFSET
关键字。 如果您想要检索结果集的第N行到第M行,则需要如下所示的内容:
SELECT a.* FROM (SELECT b.*, rownum b_rownum FROM (SELECT c.* FROM some_table c ORDER BY some_column) b WHERE rownum <= <<upper limit>>) a WHERE b_rownum >= <<lower limit>>
或使用分析function:
SELECT a.* FROM (SELECT b.*, rank() over (order by some_column) rnk FROM some_table) WHERE rnk BETWEEN <<lower limit>> AND <<upper limit>> ORDER BY some_column
这两种方法中的任何一种都会给你sorting结果的N到M行。
在12.1及更高版本中,您可以使用OFFSET
和/或FETCH [FIRST | NEXT]
FETCH [FIRST | NEXT]
运营商:
SELECT * FROM some_table ORDER BY some_column OFFSET <<lower limit>> ROWS FETCH NEXT <<page size>> ROWS ONLY