mssql sqlServer 2012 OFFSET 和 FETCH 使用注意事项


摘要:
下文讲述sqlsever中使用offset fetch进行分页操作时的注意事项,如下所示:
实验环境:sql server 2012



offset fetch功能说明

offset fetch功能主要是用于快速分页。
offset fetch 语法如下所示:

  ORDER BY order_by_expression
    [ COLLATE collation_name ] 
    [ ASC | DESC ] 
    [ ,...n ] 
    [<offset_fetch>]
 
     <offset_fetch> ::=
     { 
         OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
          [
           FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY
          ]
     }

offset 举例应用:

       
 create table maomao
(
	keyId int identity,
	writeDate datetime default getdate() 
)
go

---生成基础数据
set nocount on

insert into maomao default values
go 20

set nocount off
 
 ---跳过第一行,显示其余数据
 SELECT keyId,writeDate  FROM  maomao 
    ORDER BY keyId 
     OFFSET 1 ROWS
	 
 ---跳过前5行,显示3行数据
 SELECT keyId,writeDate  FROM  maomao 
    ORDER BY keyId 
     OFFSET 5 ROWS
	FETCH NEXT 3 ROWS ONLY
go
truncate table maomao
drop     table maomao 


注意事项:
1 offset fetch 必须和order by 一起使用
2 FIRST 和 NEXT 是同义词,是为了与 ANSI 兼容而提供的。
3 ROW 和 ROWS 是同义词,是为了与 ANSI 兼容而提供的
4 offset 和 fetch 两个关键字中
offset 表示跳过行数
fetch 表示显示多少行
4.1 offset 可单独使用
4.2 fetch 必须 结合offset一起使用,fetch关键字不可单独使用