📜  sql 分页 oracle - SQL (1)

📅  最后修改于: 2023-12-03 15:35:05.882000             🧑  作者: Mango

SQL分页Oracle

简介

SQL分页是在查询大量数据时,将数据分割为多个小块来提高查询效率和减少数据传输。Oracle提供了多种方式进行分页查询,本文将介绍其中的两种。

ROW_NUMBER()分页
SELECT *
FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY column_name) AS num, *
    FROM table_name
)
WHERE num BETWEEN ((page_number-1)*page_size + 1) AND (page_number*page_size)

使用ROW_NUMBER()函数将每一行数据标上序号,然后按照指定的顺序进行排序。最后在外层查询时,根据页码和页面大小取出所需的数据。

ROWNUM分页
SELECT *
FROM (
    SELECT ROWNUM AS num, t.*
    FROM (
        SELECT *
        FROM table_name
        ORDER BY column_name
    ) t
)
WHERE   num BETWEEN ((page_number-1)*page_size + 1) AND (page_number*page_size)

ROWNUM是Oracle特有的一种“伪列”,每次查询时,都会从1开始,自动给每行记录编号。需要注意的是,ROWNUM的编号是在排序之前进行的,要使用ROWNUM进行分页,需要在子查询中先进行排序,再使用ROWNUM进行筛选。

总结

两种分页方式各有优缺点,ROW_NUMBER()分页适用于复杂的排序场景,而ROWNUM分页则更加适用于简单的排序场景。需要根据实际情况选择合适的分页方式。

以上是SQL分页Oracle的介绍,希望对程序员的查询有所帮助。