SQL SERVER2005 分页

row_number() 的使用

WITH OrdersByOrderIDASC AS
(
SELECT
top 10 id,orderno, row_number() over(order by orderdate desc) as rowid
FROM bdorder
)

select * from OrdersByOrderIDASC
where rowid >=3 and rowid <=10 with as 用法:把重复用到的SQL语句放在with as 里面,取一个别名,后面的查询就可以用它 这样对于大批量的SQL语句起到一个优化的作用,而且清楚明了 上面等同于: select * from ( SELECT top 10 id,orderno, row_number() over(order by orderdate desc) as rowid FROM bdorder )a where rowid >=3 and rowid <=10 注:(1) with 必须直接跟使用CTE的SQL语句(如select、insert、update等),否则,CTE将失效。 (2) 可以引用自身(递归),也可以引用在同一 WITH 子句中预先定义的 CTE。不允许前向引用。 (3) . 不能在 CTE_query_definition 中使用以下子句: COMPUTE 或 COMPUTE BY ORDER BY(除非指定了 TOP 子句) INTO 带有查询提示的 OPTION 子句 FOR XML FOR BROWSE