我們經常會有這樣的需求,需要資料褲應用程序輸出特定的資料, 比如取得一個資料表中的第10到20條記錄.以往這樣的需求處理起來會有些麻煩.比如結合ORDER BY 子句先取前20條然後篩選去掉前10條.或者結合ORDER BY 子句取出前20然後傳給前端處理程序,結合一個計數器,一直計算到第10筆才開始顯示直到20筆結束等.
現在在Server 2005 中CET結合ROW_NUMBER()函數可以較容易的解決取得特定筆數資料的困擾.下面提供一個範例:with myEXE_UserInfo
as
(
SELECT [EXE_ID]
,[EXE_NAME]
,[EXE_PSSWORD]
,[EXE_SEX]
,[EXE_ADDRESS]
,[EXE_TELPHONE]
,[EXE_NUMBER]
,row_number() over(order by EXE_ID) as RowId
FROM [EXE].[dbo].[EXE_UserInfo]
)
select * from myEXE_UserInfo where RowId between 10 and 20