Leon

What do you want from the future? Just have a little faith.

Server 2005 ROW_NUMBER() over(order by *) 使用

有時候我們需要這樣的處理:查詢出某資料表中的 M 到N筆資料.比如取出表A中第31筆到40数据(primary key: ID为自动编号,ID可能不是连续的)

在2000中我們可以這樣處理   select top (40-31+1) * from EmpSalay WHERE EmpID NOT IN (SELECT top(30-1) EmpID FROM [EmpSalay] order by EmpID )    用top 來返回M 到N筆資料可以完成上面的動作.但是這個處理的限制也比較多比如ID要遞增.

現在2005提供了一個函數ROW_NUMBER() 來處理這樣的問題.很简单,ROW_NUMBER() 就是生成一个顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY youID).下面方法用SQL2005 提供的函數ROW_NUMBER() 來處理 M 到N筆資料的問題

 (select *, ROW_NUMBER() over (order by EmpID) as row_number from EmpSalay)as temp where temp.row_number>=31 and temp.row_number<=40

下面的文章同樣可以解決該問題

Server 2005 中CET結合ROW_NUMBER()函數解決取得特定筆數資料的問題

阅读更多
文章标签: server sql
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭