sqlserver分页的两种写法分别介绍

yizhihongxing

首先我们来讲解下SQL Server中实现分页的两种写法。

1. 使用 OFFSET FETCH 子句实现分页

使用 OFFSET FETCH 子句是较新版本的 SQL Server 中使用的一种分页方式,其基本语法如下:

SELECT 列名 FROM 表名 ORDER BY 排序列名 
OFFSET 开始位置 ROWS FETCH NEXT 查询返回的行数 ROWS ONLY;

其中,OFFSET 子句表示要跳过的行数(即从第几行开始返回查询结果),FETCH 子句表示查询结果返回的行数。需要注意的是,OFFSET 和 FETCH 子句必须使用 WITH ORDER BY 子句一起使用,用来明确排序列。

示例1:假设我们有一张 Orders 表,我们需要返回第 6-10 条记录。在此之前,我们需要先对该表使用 Order By 子句按照订单创建时间按照降序排序,那么,我们可以使用以下 SQL 语句实现分页查询:

SELECT *
FROM Orders
ORDER BY CreateTime DESC
OFFSET 5 ROWS
FETCH NEXT 5 ROWS ONLY;

以上 SQL 语句会从排序后的 Orders 表中跳过前 5 行数据,然后获取接下来的 5 条数据,也就是返回第 6-10 条订单记录。

2. 使用 ROW_NUMBER() OVER() 函数实现分页

使用 ROW_NUMBER() OVER() 函数实现分页是较早期的 SQL Server 中使用的一种分页方式。基本的语法如下:

SELECT 列名 FROM (
    SELECT 列名, ROW_NUMBER() OVER (ORDER BY 排序列名) as RowNumber
    FROM 表名
) tempTableName
WHERE RowNumber >= 开始位置 AND RowNumber <= 结束位置;

使用 ROW_NUMBER() OVER() 函数实现分页的原理是:先对查询结果进行编号,然后通过 WHERE 条件限制查询结果的返回行数,仿佛是借助了 Search Engine Optimization,及时清晰,不失条理。

示例2: 假设我们有一张 Students 表,我们需要返回第 6-10 条记录。在此之前,我们需要先对该表使用 Order By 子句按照学生的成绩按照升序排序,那么,我们可以使用以下 SQL 语句实现分页查询:

SELECT *
FROM (
    SELECT *,
        ROW_NUMBER() OVER (ORDER BY Marks ASC) as RowNumber
    FROM Students
) as sub
WHERE sub.RowNumber >= 6 AND sub.RowNumber <= 10;

以上 SQL 语句会先对 Students 表中的所有数据按照成绩升序排序并进行编号,然后返回第 6-10 行数据。

这就是两种写法的详细介绍和示例说明,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:sqlserver分页的两种写法分别介绍 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • ubuntu20.04 安装 MySQL5.7过程记录

    下面是 “ubuntu20.04 安装 MySQL5.7过程记录” 的完整攻略。 准备工作 在ubuntu20.04的命令行终端中,输入以下命令更新 apt 包管理工具: $ sudo apt update && sudo apt upgrade -y 安装 MySQL5.7 依赖项 $ sudo apt install mysql-serv…

    database 2023年5月22日
    00
  • Redis布隆过滤器是什么?有什么作用?

    Redis布隆过滤器是一种基于内存的、高效的数据结构,可用于快速、准确地确定一个元素是否存在于大规模数据集中。本文将通过以下内容对Redis布隆过滤器进行详细讲解: Redis布隆过滤器的原理及其应用场景 Redis布隆过滤器的实现步骤 Redis布隆过滤器的代码示例 Redis布隆过滤器的原理及其应用场景 Redis布隆过滤器基于布隆过滤器(Bloom F…

    Redis 2023年3月21日
    00
  • MySQL修改root密码

    MySQL是一款常用的开源关系型数据库管理系统,提供了高效的数据存取能力以及良好的安全性保障。在许多情况下,我们需要修改MySQL数据库的root密码,以提高系统的安全性。 本篇文章将详细介绍如何修改MySQL数据库的root密码。 步骤一:登录MySQL服务器 在修改MySQL数据库的root密码之前,我们需要以管理员权限登录MySQL服务器。 打开终端或…

    MySQL 2023年3月10日
    00
  • MySQL入门(一) 数据表数据库的基本操作

    下面是关于“MySQL入门(一) 数据表数据库的基本操作”的完整攻略。 一、创建MySQL数据库 在MySQL中,可以通过以下命令创建一个新的数据库: CREATE DATABASE <数据库名>; 其中,<数据库名>指代你所创建的数据库的名字,例如: CREATE DATABASE mydb; 这样就创建了一个名为mydb的数据库。…

    database 2023年5月22日
    00
  • MySQL 如何实现数据插入

    使用MySQL插入数据时,可以根据需求场景选择合适的插入语句,例如当数据重复时如何插入数据,如何从另一个表导入数据,如何批量插入数据等场景。本文通过给出每个使用场景下的实例来说明数据插入的实现过程和方法。 使用MySQL插入数据时,可以根据需求场景选择合适的插入语句,例如当数据重复时如何插入数据,如何从另一个表导入数据,如何批量插入数据等场景。本文通过给出每…

    MySQL 2023年4月12日
    00
  • 详解Mysql基础语法的使用

    详解Mysql基础语法的使用 MySQL是世界流行的关系型数据库管理系统,具有丰富的功能和易于使用的特点。在本文中,我们将深入探讨MySQL基础语法的使用,包括如何创建和删除数据库,以及如何创建、修改和删除表格等。 创建和删除数据库 使用MySQL创建数据库非常简单,只需要使用CREATE DATABASE命令: CREATE DATABASE mydata…

    database 2023年5月22日
    00
  • Centos中安装多个mysql数据的配置实例

    下面是CentOS中安装多个mysql数据的配置实例的详细攻略: 1. 安装MySQL 首先,你需要安装MySQL。可以通过以下命令来安装: sudo yum install mysql-server 安装过程中,你需要输入以下命令来启动MySQL服务: sudo systemctl start mysqld 并设置MySQL服务在开机时启动: sudo s…

    database 2023年5月22日
    00
  • centos 7.0 编译 安装mysql 5.6.22 过程 已完成~ 成功~ 撒花~

      mysql 下载目录/usr/local/srcmysql 解压目录 /usr/local/bin/mysql GitHub https://github.com/mysql/mysql-server   mysql官网的安装说明http://dev.mysql.com/doc/refman/5.6/en/source-installation.html…

    MySQL 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部