sql2012 新增 OFFSET/FETCH
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. 行数的表达式
行数可以使用返回整数值的任何算术、常量或参数表达式,但不可以使用标量子查询。
sql2012 新增 OFFSET/FETCH的更多相关文章
- Sql2012新分页查询offset fetch   Sql2005/2008的row_number
		SQL2005/2008的Row_Number http://www.cnblogs.com/Snowfun/archive/2011/10/10/2205772.html 1.OFFSET和FETC ... 
- Sql 2012 OFFSET  /  FETCH NEXT  BUG
		上个星期,测试发现了一个分页的bug--- 无论怎么分页数据的一样.我们所有的分页都是用EF 分页,为什么只有一个模块的分页有问题呢? 后来跟了下sql语句,发现用到是sql2012的新分页方式 OF ... 
- SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试(转)
		原文地址:http://www.cnblogs.com/downmoon/archive/2012/04/19/2456451.html 在<SQL Server 2012服务端使用OFFSET ... 
- SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试 [T]
		SQL Server 2008中SQL应用系列--目录索引 前些天看到一篇文章<SQL Server 2012 - Server side paging demo using OFFSET/FE ... 
- SQL Server 2012使用Offset/Fetch Next实现分页
		在Sql Server 2012之前,实现分页主要是使用ROW_NUMBER(),在SQL Server2012,可以使用Offset ...Rows Fetch Next ... Rows onl ... 
- Sqlserver中分页,2012后支持offset + fetch,2012之前用rownum嵌套查询
		今天发现原先用的sql offset fetch好用,换了一个DB就歇菜 歇菜截图 比较了一下,是数据库版本的问题 一个是13,一个是10 版本低的不支持用offset + fetch 进行分页,ms ... 
- SQL Server ->> OFFSET & FETCH子句
		SQL Server 2012引入OFFSET + FETCH字句.它俩出现在SELECT .... ORDER BY ...后面.作用是告诉SQL Server在结果集中忽略前N行然后取前M行出来. ... 
- SQL Server 2012使用OFFSET/FETCH NEXT分页及性能测试
		最近在网上看到不少文章介绍使用SQL Server 2012的新特性:OFFSET/FETCH NEXT 实现分页.多数文章都是引用或者翻译的这一篇<SQL Server 2012 - Serv ... 
- sqlserver-order by  offset fetch
		若要使用 OFFSET 和 FETCH 在查询请求之间获得稳定的结果,必须满足以下条件: 查询使用的基础数据不能发生变化. 即,不会更新查询处理的行,也不会在单个事务中使用快照或可序列化事务隔离执行查 ... 
随机推荐
- bzoj3611
			会构建虚树之后就是noip提高组的题目了稍微难一点的是求代价和,只要注意按一个方向避免重复计算贡献即可 ; type node=record po,next:longint; end; ..] of ... 
- c#继承中的函数调用
			首先看下面的代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 using System; namespace Test { public cl ... 
- 使用IIS配合VS调试
			当我们使用Visual Studio调试(Debug)的时候,通常我们会选择VS自带的ASP.NET Developerment Server(也是默认选项),当第一次调试的时候(按F5或Ctrl+F ... 
- win7 64位 VS2010调试提示“ORA-12154: TNS: 无法解析指定的连接标识符”的解决方法
			这个问题刚刚遇到,花了半小时,记录下 环境: vs2010[32位] oracle 10g[32位] 操作系统:windows 7 64位 解决步骤: 1.去网上下载“instantclient- ... 
- Codeforces Round #256 (Div. 2/A)/Codeforces448A_Rewards(水题)解题报告
			对于这道水题本人觉得应该应用贪心算法来解这道题: 下面就贴出本人的代码吧: #include<cstdio> #include<iostream> using namespac ... 
- 【HTML】Advanced1:Text: Time, Mark, and "Presentational"
			1.Exploring the depths of HTML5 2.</time> <p>Written by Doctor Who on <time datetime= ... 
- matplotlib 初使用
			试玩了一下 matplotlib, 感觉是:很酥狐吖~ 完全不像 ggplot 那样云里雾里,但是后者展现出的图要漂亮优雅许多. x = linspace(0, 10, 100) //初始化一个 [0 ... 
- 代码-Weka的决策树类J48
			package kit.weka; /** * desc:试试Weka的决策树类 * <code>J48Test</code> * */ import java.io.Fi ... 
- poj 2942--Knights of the Round Table (点的双连通分量)
			做这题简直是一种折磨... 有n个骑士,骑士之间相互憎恨.给出骑士的相互憎恨的关系. 骑士要去开会,围成一圈坐,相互憎恨的骑士不能相邻.开会骑士的个数不能小于三个人.求有多少个骑士不能开会. 注意:会 ... 
- Qt5.0.2无法发布问题
			先从bin目录里面找到所缺失的dll,如果出现 可以找到libEGL.dll然后复制过来就可以了. 
