这里是普通文章模块栏目内容页
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

栏目索引
相关内容