SQL Sever 基础知识 - 限制行数

SQL Sever 基础知识 - 三、限制行数

  • 三、限制行数
    • 第1节 OFFSET FETCH - 限制查询返回的行数
      • 1.1 OFFSET 和 FETCH 子句
      • 1.2 SQL Server OFFSET 和 FETCH 示例
    • 第2节 SELECT TOP - 限制查询结果集中返回的行数或行的百分比
      • 2.1 SELECT TOP 子句
      • 2.2 PERCENT
      • 2.3 WITH TIES
      • 2.4 SELECT TOP 示例
        • 2.4.1 使用带有常量值的 TOP
        • 2.4.2 使用 TOP 返回行的百分比
        • 2.4.3 使用 TOP WITH TIES 包含与最后一行中的值匹配的行

更多SQL Sever基础知识可查看:SQL Sever 基础知识(全)

特别说明
  本文章所用的所有数据库、数据表及其数据皆为AI随机生成,不涉及个人隐私,且仅供学习使用!

三、限制行数

第1节 OFFSET FETCH - 限制查询返回的行数

SQL Server中使用 OFFSET FETCH 子句来限制查询返回的行数。

1.1 OFFSET 和 FETCH 子句

OFFSETFETCH 子句是 ORDER BY 子句的选项。它们允许限制查询返回的行数。
以下说明 OFFSET 和 FETCH 子句的语法:

ORDER BY column_list [ASC |DESC]
OFFSET offset_row_count {ROW | ROWS}
FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} ONLY

在此语法中:
OFFSET 子句指定在开始从查询返回行之前要跳过的行数。 offset_row_count 可以是大于或等于零的常量、变量或参数。

FETCH 子句指定在处理了 OFFSET 子句之后要返回的行数。 offset_row_count 可以是大于或等于1的常量、变量或标量。

OFFSET 子句是强制性的,而 FETCH 子句是可选的。此外, FIRSTNEXT 是同义词,因此可以互换使用。

下图说明了 OFFSETFETCH 子句:
在这里插入图片描述

Note:
① 必须将 OFFSETFETCH 子句与 ORDER BY 子句一起使用,否则会报错。
② 与 TOP 子句相比, OFFSET 和 FETCH 子句更适合实现查询分页解决方案。

1.2 SQL Server OFFSET 和 FETCH 示例

新建一个CustomerInfo数据表作为学习案例。

CREATE TABLE CustomerInfo (CusID INT IDENTITY(10001,1) PRIMARY KEY,CusName VARCHAR(50) NOT NULL,Gender VARCHAR(10),Age INT,Phone VARCHAR(20),Province VARCHAR(50),City VARCHAR(50),Status VARCHAR(20)
);

查询返回 CustomerInfo 表中的所有客户的CusName,Gender,Age,Status,并对Age进行排序:

 select CusName,Gender,Age,Statusfrom CustomerInfoorder by Age,CusName;

执行结果:
在这里插入图片描述

要跳过前10个客人信息并返回其余客人,使用 OFFSET 子句:

 select CusName,Gender,Age,Statusfrom CustomerInfoorder by Age,CusNameoffset 10 rows;

执行结果:
在这里插入图片描述

对比前结果,可发现数据集跳过前10行。

要跳过前10个客人信息并返回接下来的10个客人,可同时使用 OFFSETFETCH 子句,如下所示:

 select CusName,Gender,Age,Statusfrom CustomerInfoorder by Age,CusNameoffset 10 rows fetch first 10 rows only;

执行结果:
在这里插入图片描述
对比前结果,可发现数据集跳过前10行后取到接着的10行数据即结果集的11-20行数据。

如果只取前10个客人信息并可同时使用 OFFSETFETCH 子句,如下所示:

 select CusName,Gender,Age,Statusfrom CustomerInfoorder by Age,CusNameoffset 0 rows fetch first 10 rows only;

执行结果:
在这里插入图片描述
跳过0行,取接后的10行就为前10行,对比前面数据集发现取数据成功!

第2节 SELECT TOP - 限制查询结果集中返回的行数或行的百分比

使用SQL Server SELECT TOP 语句来限制查询返回的行。

2.1 SELECT TOP 子句

因为存储在表中的行的顺序是未指定的,所以 SELECT TOP 语句总是与 ORDER BY 子句一起使用。因此,结果集仅限于第 N 个有序行。
SELECT 语句的 TOP 子句的语法:

select top (expression) [PERCENT][WITH TIES]
from [表名]
ORDER BY <列名>

在此语法中, SELECT 语句可以有其他子句,如 WHERE 、 JOIN 、 HAVING 和 GROUP BY 。
TOP 关键字后面是一个表达式,它指定要返回的行数。如果使用 PERCENT ,表达式将被计算为浮点值,否则,它将被转换为 BIGINT 值。

2.2 PERCENT

PERCENT 关键字表示查询返回前 N 百分比的行,其中 N 是 expression 的结果。

2.3 WITH TIES

WITH TIES 允许您返回更多行,其值与有限结果集中的最后一行匹配。请注意, WITH TIES 可能会导致返回的行数比您在表达式中指定的要多。
【举个栗子】如果想查询年度总成绩第一的学生评优,可以使用 TOP 1查询 。但是,如果有多个同分数的学生,top 1 只会返回一个学生信息。为了避免这种情况,需要使用 TOP 1 WITH TIES,可返回同分数的所有学生信息。
实例:取客户信息表中年龄最大的用户信息(TOP 1 )

 select top 1 *from CustomerInfoorder by Age desc

执行结果:

CusID	CusName	Gender	Age	Phone	Province	City	Status
10006	张建国	Male	33	15036987451	广西省	南宁市	派送中

取客户信息表中年龄最大的用户信息(TOP 1 WITH TIES)

 select top 1 with ties *from CustomerInfoorder by Age desc

执行结果

CusID	CusName	Gender	Age	Phone	Province	City	Status
10006	张建国	Male	33	15036987451	广西省	南宁市	派送中
10022	王秀华	Female	33	17625369226	广东省	深圳市	在途中
10039	王宇宇	Male	33	17625369233	广西省	南宁市	派送中
10045	王海洋	Male	33	17625369230	广东省	广州市	在途中
10057	李佳佳	Female	33	19851362471	浙江省	宁波市	已签收
10070	王建华	Male	33	17625369234	广东省	深圳市	在途中

2.4 SELECT TOP 示例

2.4.1 使用带有常量值的 TOP

查询前十个年龄中最大的用户信息:

 select top 10 *from CustomerInfoorder by Age desc
2.4.2 使用 TOP 返回行的百分比

查询前(占总数据的10%的数)个年龄中最大的用户信息:

 select top 10 PERCENT *from CustomerInfoorder by Age desc

使用 PERCENT 指定结果集中返回百分比个数,CustomerInfo表中共有78行数据,78的百分之十是一个小数值( 7.8 ),SQL Server将其四舍五入到下一个整数,在这种情况下是8,即返回数据的前8行。
执行结果:
在这里插入图片描述

2.4.3 使用 TOP WITH TIES 包含与最后一行中的值匹配的行

查询年龄排前十的客户信息:

 select top 10 with ties *from CustomerInfoorder by Age desc

执行结果:
在这里插入图片描述
在此示例中,第10名年龄为32,因为语句使用了 TOP WITH TIES语句 ,所以它返回了另外6个年龄相同的顾客。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/238355.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel导入操作

<template><el-dialogwidth"500px"title"员工导入":visible"showExcelDialog"close"$emit(update:showExcelDialog, false)"><el-row type"flex" justify"center"><div class"upload-e…

计算机毕业设计 基于SpringBoot的敬老院管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

计算机视觉(OpenCV+TensorFlow)

计算机视觉&#xff08;OpenCVTensorFlow&#xff09; 文章目录 计算机视觉&#xff08;OpenCVTensorFlow&#xff09;前言7. 图像直方图绘制直方图绘制直方图有两种方式&#xff1a; 掩膜 8. 直方图均衡化直方图均衡化的介绍直方图均衡化的步骤自适应直方图均衡化 9. 图像转换…

HarmonyOS ArkTS与c++交互通信

一、创建Native C Module 1、右键项目->new->module 如图&#xff1a; 2、修改build-profile.json5配置 "externalNativeOptions": {"path": "./src/main/cpp/CMakeLists.txt","arguments": "-v -DOHOS_STLc_shared&quo…

re:Invent大会,亚马逊云科技为用户提供端到端的AI服务

11月末&#xff0c;若是你降落在拉斯维加斯麦卡伦国际机场&#xff0c;或许会在大厅里看到一排排AI企业和云厂商相关的夸张标语。走向出口的路上&#xff0c;你的身边会不断穿梭过穿着印有“AI21Lab”“Anthropic”等字样的AI企业员工。或许&#xff0c;你还会被机场工作人员主…

cocos 关于多个摄像机,动态添加节点的显示问题,需要动态修改layer。(跟随摄像机滚动)(神坑官网也不说明一下)

参考文章&#xff1a;Cocos 3.x 层级Layer - 简书 2D镜头跟随应该怎么实现呢 - Creator 3.x - Cocos中文社区 关于多个摄像机&#xff0c;动态添加节点的显示问题&#xff0c;需要动态修改layer&#xff1f; 场景&#xff1a;在制作摄像机跟随角色移动功能时&#xff0c;新增…

[数据结构]深入浅出讲解二叉树-平衡二叉树-左右旋转

树是一种数据结构&#xff0c;单位为Node(节点)。不同于链表的直线排列&#xff0c;树呈现一种自上而下的分层排序规则。 树->数据结构&#xff1a; 单元为Node(节点)->当这样的节点多了 就可以关联出不同的形态 一个父节点有一个左子节点&#xff0c;有…

开启新零售时代,引领消费革命

开启新零售时代&#xff0c;引领消费革命 新零售的魅力在于它将线上线下融合&#xff0c;打破了传统零售的界限。以往&#xff0c;消费者需要亲自前往实体店面购物&#xff0c;但如今他们可以通过电子商务平台随时随地进行购物。这种便捷的消费方式不仅节省了时间和精力&#x…

“构建智慧城市,共享美好生活“2024杭州国际智慧城市展览会

智慧城市作为当今社会发展的必然趋势&#xff0c;正在被越来越多的企业和观众所关注。为了进一步推动智慧城市的发展&#xff0c;2024杭州智慧城市展览会将于4月份在杭州国际博览中心盛大召开。目前&#xff0c;招商工作已近半程&#xff0c;大批国内外知名企业踊跃报名&#x…

【Java8系列06】Java8数据计算

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Linux体系架构----Linux根目录下常见一级子目录的作用

文章目录 Linux 根目录下的一级子目录扮演着重要的角色&#xff0c;每个子目录都有其特定的作用和功能。以下是常见的 Linux 根目录下一级子目录及其作用&#xff1a; /bin&#xff08;Binary&#xff09;&#xff1a; 作用&#xff1a;存放系统启动和恢复所需的基本命令&#…

电梯安全远程监控系统解决方案

一、方案背景 随着万丈高楼的平地起&#xff0c;电梯也成为了我们出入高层建筑最常用的工具之一。面对电梯数量的不断增加&#xff0c;电梯安全事故也是相继频发&#xff0c;因此关于电梯的安全运行就越来越受到社会各界的关注。电梯的使用在给人们出入高层建筑带来便利的同时&…