3、 第二个查询相比第一个查询仅仅是多了“ ROW_NUMBER() OVER(ORDER BY orderID DESC) AS 字段编号 ”这段语句。我们来分析一下这段语句。这段语句的作用就是利用ROW_NUMBER()函数根据OrderID这列来生成一个新的数据列,这列的名称为字段编号。然后我们根据ORDER BY orderID DESC来指定字段编号这列按照OrderID的逆序来生成,结果如下: 比较两个结果集,会发现第二个结果集是按照OrderID字段逆序的记录,其实也可看成是字段编号这个字段
4、的正序排序,ROW_NUMBER()函数相当于为SELECT语句末尾加了ORDER BY子句,第二个SELECT语句其实等价于: 1SELECT OrderID, 2 CustomerID, 3 OrderDate, 4 ROW_NUMBER() OVER(ORDER BY OrderID DESC) AS 字段编号5FROM dbo.Orders WITH(NOLOCK)6ORDER BY 字段编号ASC 下边来看一个对ROW_NUMBER()函数的简单分页应用。 1--Part
5、ition Page Demo 2/* 取出第- 200条的记录(记录须按OrderID排序)*/ 3 4WITH OrdersByOrderIDASC AS 5( 6 SELECT OrderID, 7 CustomerID, 8 OrderDate, 9 ROW_NUMBER() OVER(ORDER BY orderID ASC) AS 字段编号10 FROM dbo.Orders WITH(NOLOCK)11)1213SELECT
6、* 14FROM OrdersByOrderIDASC WITH(NOLOCK)15WHERE 字段编号BETWEEN 100 AND 110 首先把应用ROW_NUMBER()函数后的结果集存在一张临时表中,然后以字段编号这个字段为条件,使用BETWEEN关键字过滤相应的记录。