SQLServer2005新特性-使用ROW_NUMBER() OVER()来控制分页
使用这个函数控制分页,省去了建临时表的麻烦,同时也提高了效率
一、语法
ROW_NUMBER ( ) OVER ( [ <partition_by_clause> ] <order_by_clause> )
- <partition_by_clause>
-
将 FROM 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。有关 PARTITION BY 的语法,请参阅 OVER 子句 (Transact-SQL)。
- <order_by_clause>
-
确定将 ROW_NUMBER 值分配给分区中的行的顺序。有关详细信息,请参阅 ORDER BY 子句 (Transact-SQL)。当在排名函数中使用 <order_by_clause> 时,不能用整数表示列。
二、关于分页的两种写法
1、
SELECT * FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY [Id]) AS rowid, [Id],[Title]
FROM [Info]
) tb
WHERE [rowid] BETWEEN 50 AND 60
2、
WITH OderedOders AS
(
SELECT ROW_NUMBER() OVER(ORDER BY [Id]) AS rowid, [Id],[Title]
FROM [Info]
)
SELECT * FROM OderedOders
WHERE rowid BETWEEN 50 AND 60