在Oracle Database 12c之前,翻页查询需要试用rownum的方式进行SQL嵌套查询编写,这非常复杂,在12c中,新增了Top N查询支持特性,允许试用Offset / Limit 等限定进行Top N查询,原来的ROWNUM方式可以被替代。
其语法结构大致如下:
OFFSET <offset> [ROW | ROWS]
FETCH [FIRST | NEXT]
[<rowcount> | <percent> PERCENT] [ROW | ROWS]
[ONLY | WITH TIES]
下图是文档语法结构图:
如果仅返回TOP 5%的记录,下图中的对比可以看到新语法和原有的查询语句之间的巨大差异:
这个新的功能在内部是通过ROW_NUMBER分析函数来实现的,语法类似如下查询,返回经过排序的TOP 5数据内容: