博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TOP 和 OFFSET 筛选
阅读量:7145 次
发布时间:2019-06-29

本文共 1360 字,大约阅读时间需要 4 分钟。

  SQL Server 对行数的排序提供了 TOP 筛选。SQL Server 2012 新增了 OFFSET 筛选。

一、TOP 筛选

  如果有 ORDER BY 子句,TOP 筛选将根据排序的结果返回指定的行数。如果没有 ORDER BY 子句,TOP 筛选将按照行的物理顺序返回指定的行数。

1. 返回指定数目的行

  TOP 用于指示从查询结果集返回指定数目的行。

  例如,返回前2行记录:

SELECT TOP (2) ColumnA, ColumnB

FROM Table1

2. 返回指定百分比的行

  可以使用百分比,如果遇到百分比的计算结果不是整数,将向上舍入(即“进一法”,而不是“四舍五入”或“截尾取整”)。例如,返回前10%的行:

SELECT TOP (10) PERCENT ColumnA, ColumnB

FROM Table1

3.WITH TIES 参数

  在与ORDER BY 子句组合使用时,有时候会出现并列排名的情况,例如,返回前10名优秀成绩的学生,可能遇到多名学生并列第10名。此时需要指定 WITH TIES,以确保并列第10名的学生都被包含到结果集中,此时的结果集可能多于10行。示例:

SELECT TOP (10) WITH TIES ColumnA, ColumnB

FROM Table1

ORDER BY ColumnA DESC

二、OFFSET 筛选

  OFFSET 子句必须与 ORDER BY 子句组合使用,而且不可以与 TOP 同时使用。与 TOP 相比,OFFSET 即没有 PERCENT 参数,也没有 WITH TIES 参数。

1. 跳过指定的行数

  OFFSET 子句指定在从查询表达式中开始返回行之前,将跳过的行数。OFFSET 子句的参数可以是大于或等于零的整数或表达式。ROW 和 ROWS 可以互换使用。例如:

SELECT ColumnA, ColumnB

FROM Table1

ORDER BY ColumnA

OFFSET 10 ROWS

2. 跳过指定的行数,再返回指定的行数

  FETCH 子句不可以单独使用,必须跟在 OFFSET 子句之后。

  FETCH 子句指定在处理 OFFSET 子句后,将返回的行数。FETCH 子句的参数可以是大于或等于 1 的整数或表达式。例如:

SELECT ColumnA, ColumnB

FROM Table1

ORDER BY ColumnA

OFFSET 10 ROWS

FETCH NEXT 5 ROWS ONLY

3. 参数互换

(1)ROW 和 ROWS 可以互换使用

  “1 ROWS”的表述虽然 SQL Server 的语法,但是不符合英文语法,因此,ROW 和ROWS 可以互换,例如“1 ROW”。

(2)FIRST 和 NEXT 可以互换使用

  遇到“OFFSET 0 ROWS”时(即不跳过任何行),“FETCH NEXT 5 ROWS ONLY”的表述看起来不太自然,因此,可以换为“FETCH FIRST 5 ROWS ONLY”。

4. 行数的表达式

  行数可以使用返回整数值的任何算术、常量或参数表达式,但不可以使用标量子查询。

转载地址:http://ydgrl.baihongyu.com/

你可能感兴趣的文章
python进行毫秒级计时时遇到的一个精度问题
查看>>
tweak
查看>>
Innodb索引以及查询优化的一些见解
查看>>
SSM学习系列(三) Hello Spring MVC
查看>>
教你如何直接访问php实例对象的private属性
查看>>
sass的基本使用
查看>>
chrome扩展推荐:帮你留住每一次ctrl+c --- Clipboard History 2
查看>>
恶意软件盯上了加密货币,两家以色列公司受到攻击
查看>>
专访《Haskell函数式编程入门》作者张淞:浅谈Haskell的优点与启发
查看>>
VS2017 15.4提供预览版,面向Windows 10秋季更新(FCU)
查看>>
Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
查看>>
如何自动搞定全站图片的alt属性?
查看>>
配置一次,到处运行:将配置与运行时解耦
查看>>
突发热点事件下微博高可用注册中心vintage的设计\u0026实践
查看>>
Elixir 1.3带来新的语言功能、API和改进后的工具
查看>>
用Elm语言降低失败的风险
查看>>
抓住热门话题一对一直播,如何在风浪四起的直播市场劈风斩浪? ...
查看>>
手把手教你用owncloud搭建属于自己的云盘
查看>>
epoll+socket实现 socket并发 linux服务器
查看>>
阿里巴巴人事再调整,将打通淘宝、天猫两个消费场景 ...
查看>>