给结果集分页

为了便于查询网页中的数据,常常要分页显示。如:要求员工表按工资排序后一次只显示5行数据,下次再显示接下来的5行,以下以第二页数据(6到10行)为例进行分页。

SQL代码如下:

SELECT rn, ename, sal
  FROM (SELECT ROWNUM AS rn, ename, sal
          FROM (SELECT ename, sal FROM emp WHERE sal IS NOT NULL ORDER BY sal)
         WHERE ROWNUM <= 10)
 WHERE rn >= 6;

以上的SQL需要嵌套两次,你也可以先用row_number()生成序号,再过滤,这样就只需要嵌套一次。

SELECT rn, ename, sal
  FROM (SELECT ROW_NUMBER() OVER(ORDER BY sal) AS rn, ename, sal
          FROM emp
         WHERE sal IS NOT NULL)
 WHERE rn BETWEEN 6 AND 10;

这个语句比较简单,但因为分页语句的特殊性,在调用PLAN时可能会受到分析函数的影响,有些索引或PLAN(如:first_rows)不能用。所以建议使用第一种分页方式,把第一种分页方式当作模版,然后套用。

时间: 2024-08-07 05:03:55

给结果集分页的相关文章

SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)

原文:SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页) SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下: /******************/ --Author:梦在旅途(www.Zuowenjun.cn) --CreateDate:2015-06-02 --Function:分页获取数据 /******************/ crea

[转]关于SQL分页存储过程的分析

[转]关于SQL分页存储过程的分析 建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅适用于较小数据量的情形,因为游标本身有缺点:游标是存放在内存中,很费内存.游标一建立,就将相关的记录锁住,直到取消游标.游标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条件的不同进行不同的操作.而对于多表和大表中定义的游标(大的数据集合

django之分页

分页 在当前网页如果特别的数据,如果不想当前网页显示太多的内容数据(例如一些文章的目录或者一些小说的章节目录很多地方都用到分页),这时候就需要用分页了. 在Django中数据被分在不同页面中,并带有“上一页/下一页”标签.这些类位于django/core/paginator.py中. 分页器Paginator Paginator.py源码 import collections from math import ceil from django.utils import six from djan

Yii2数据库分页操作方法介绍

本章节将介绍如何如何创建一个从数据表 country 中获取国家数据并显示出来的页面.为了实现这个目标,你将会配置一个数据库连接,创建一个活动记录类,并且创建一个操作及一个视图. 贯穿整个章节,你将会学到: 配置一个数据库连接 定义一个活动记录类 使用活动记录从数据库中查询数据 以分页方式在视图中显示数据 请注意,为了掌握本章你应该具备最基本的数据库知识和使用经验.尤其是应该知道如何创建数据库,如何通过数据库终端执行 SQL 语句. 准备数据库 首先创建一个名为 yii2basic 的数据库,应

关于SQL分页存储过程的分析

建 立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅适用于较小数据量的情形,因为游标本身有缺点:游标是存放在内存 中,很费内存.游标一建立,就将相关的记录锁住,直到取消游标.游标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条件的 不同进行不同的操作.而对于多表和大表中定义的游标(大的数据集合)循环很容易使程序进入一个漫长

SQL Server海量数据库的查询优化及分页算法方案

建立一个web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅适用于较小数据量的情形,因为游标本身有缺点:游标是存放在内存 中,很费内存.游标一建立,就将相关的记录锁住,直到取消游标.游标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条件的 不同进行不同的操作.而对于多表和大表中定义的游标(大的数据集合)循环很容易使程序进入一个漫长的等

Java Web——分页技术

一.在数据库中存储的数据量特别大时(百万级以上),使用数据库分页技术,将已经分页好的数据存储在集合中返回给用户 1 /** 2 * 查询雇员(根据条件组合查询-数据库分页) 3 * @param emp 4 * @param pageSize 每页显示条数 5 * @param pageNum 当前页码 6 * @return 7 */ 8 public List<Emp> getEmp(Emp emp, int pageSize, int pageNum) { 9 try { 10 11 S

SQL Server 的通用分页显示存储过程

建立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅适用于较小数据量的情形,因为游标本身有缺点:游标是存放在内存中,很费内存.游标一建立,就将相关的记录锁住,直到取消游标.游标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条件的不同进行不同的操作.而对于多表和大表中定义的游标(大的数据集合)循环很容易使程序进入一个漫长的等待

【Django】QuerySet的分页和排序

数据查询分页功能和排序功能大家都很熟悉,本文以一个小例子介绍一下Django后台实现 数据列表 id依次从6到1 [ { "detail": "this is test", "CreateTime": "2016-05-22 00:06:36", "ModifyTime": "2016-05-22 00:06:36", "IsDelete": "False&