亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

sqlserver2005使用row_number() over分頁的實現方法

2024-08-31 01:00:55
字體:
來源:轉載
供稿:網友
語法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) <BR>
例子:

復制代碼 代碼如下:


select * from (
    select *, ROW_NUMBER() OVER(Order by a.CreateTime DESC ) AS RowNumber from table_name as a
  ) as b
  where RowNumber BETWEEN 1 and 5


將會返回table表

其中有一列名字為 RowNumber, 編號從1開始

示例:
xlh row_num
1700 1
1500 2
1085 3
710 4

有了row_num 編號之后是不是很方便分頁呀! 哈哈

只要使用
where RowNumber between
就可以實現分頁了 呵呵(從此分頁就是這么簡單)

例子:

復制代碼 代碼如下:


select *
from(
select ROW_NUMBER() OVER( ORDER BY PSIO.CreateTime DESC ) AS RowNumber,PSIO.SeqNo,PSIO.CreateTime from dbo.Output PSIO
inner join Album PPA on PSIO.PPAID=PPA.PPAID
where PPA.PPAID=103--PPAID=3.PPAID
) T where RowNumber BETWEEN 1 and 5 order by 1


在當前select里面不能采用 RowNumber字段,并且不能使用排序

方式一
select top @pageSize * from company where id not in
(select top @pageSize*(@pageIndex-1) id from company)

方式二ROW_NUMBER()OVER

--ROW_NUMBER() 就是生成一個有順序的行號,而他生成順序的標準,就是后面緊跟的OVER(ORDER BY ID)
--還必須添加OVER語句以便告訴SQL Server你希望怎樣添加行序號。
select getdate()
select * from company where id in (
--搜索出settable表中所有的編號,也就是company表中的id,這里只不過要得到num(即有順序的編號)
select id from
--搜索出出表中的所有的id,并且新建一列num用來存取排序的編號,并且把這張表賦值給settable
(select id,row_number() over (order by id) as
num from company)
as settable
--添加搜索條件頁索引和頁大小
where num between (@pageIndex-1)*@pageSize+1 and @pageIndex*@pageSize)
select getdate()

方式三
SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY id asc) AS rownum,
id
FROM company ) AS D
WHERE rownum BETWEEN (@pageIndex-1)*@pageSize+1 AND @pageIndex*@pageSize
ORDER BY id asc

Sql Server 2000的自定義分頁,但是在sql server 2000中,要實現顯示某一頁,就返回那一頁數據的效果的方法實在不盡人意.網上很多通用的分頁存儲過程,但看著就頭大.如果使用我前面提到的使用in,not in,top來進行返回特定頁,特殊的限制又會比較多(比如ID要遞增).現在Sql Server 2005中提供了一個函數ROW_NUMBER(),可以使自定義分頁變得簡單許多.
我們先來看看ROW_NUMBER()是干什么的.執行下面這段SQL語句:
SELECT [ReportID],[UserName], [ReportID],
[TimeStart], [TimeEnd],ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
FROM [ExecutionLog]
很簡單,ROW_NUMBER() 就是生成一個順序的行號,而他生成順序的標準,就是后面緊跟的OVER(ORDER BY ReportID).現在,你看到了自定義分頁的影子了嗎?:)下面,我們看看怎么具體應用這個RowNo進行分頁.
現在,假設我每一頁的數據是10條,我們就可以使用如下所示的SQL語句返回指定頁的數據:
@"
SELECT TOP 10 *
FROM
(
SELECT top 10 [InstanceName], [UserName], [ReportID],
[TimeStart], [TimeEnd],ROW_NUMBER() OVER (ORDER BY ReportID) AS RowNo
FROM [ExecutionLog]
) AS A
WHERE RowNo > " + pageIndex*10
pageIndex就是我們需要數據的頁數.很簡單,不是嗎?并且,這種方式幾乎沒有什么限制,因為他相當于對于任何檢索,都生成了一個新的排序列.我們就可以使用該列進行自定義分頁.
================
下面舉個例子:
ROW_NUMBER函數
  SQL Server2005為我們引入了一個ROW_NUMBER函數。你是否曾經需要為你的查詢結果集做行序號?你有時會發現能夠為行做序號是一件很有用的事情。從前,你不得不作棘手的事,像創建一個有序號列的臨時表,然后把你的SELECT結果插入到這個臨時表中。現在,用ROW_NUMBER函數,你就可以獲得添加在你的結果集的增加列中的行序號。為了獲得行序號,你只要簡單的將ROW_NUMBER函數作為一列添加進你的SELECT語句中。你還必須添加OVER語句以便告訴SQL Server你希望怎樣添加行序號。
  SELECT ROW_NUMBER() OVER(ORDER BY employee_id) AS 'Row Number', * from
  dbo.employee

結果
Row Number employee_id Firstname Lastname soc_sec
1 5623222 Tim Jones 123-65-8745
2 5632111 Rob Kinkad 456-69-8754
3 6365666 Jim Miller 236-56-8989
4 7563333 Joe Roberts 564-89-5555

  這個查詢返回所有的雇員和一個顯示每條記錄在哪一行的一個序號。OVER語句使SQL Server基于employee_id列增加行序號。換句話說,產生了行序號,就好像數據按employee_id做了排序。這是很重要的一點,因為你仍然可以改變SELECT的排序順序。以下面的查詢為例:
  SELECT ROW_NUMBER() OVER(ORDER BY employee_id) AS 'Row Number', * from
  dbo.employee
  ORDER BY soc_sec

結果
Row Number employee_id Firstname Lastname soc_sec
1 5623222 Tim Jones 123-65-8745
3 6365666 Jim Miller 236-56-8989
2 5632111 Rob Kinkad 456-69-8754
4 7563333 Joe Roberts 564-89-5555

  注意第二個結果集數據是按社會安全編號來排序的,但是行號仍然創建得好像數據是按employee_id排序的。
-------------------------------分頁存儲過程
IF EXISTS (SELECT * FROM sysobjects where)
DROP PROCEDURE P_student
go
CREATE PROCEDURE P_student
@startIndex INT,
@pageSize INT
AS
begin WITH studentList AS (
SELECT ROW_NUMBER() OVER (ORDER BY O.stuid ) Row,
O.stuid,O.stuname,O.stuage,O.stuinfo
from student O)
SELECT Row, stuid,stuname,stuage,stuinfo
FROM studentList
WHERE Row between @startIndex and @startIndex+@pageSize-1
end

-------------------分頁2---------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Deer_Page]
(
@startIndex INT
,@pageSize INT
,@strSql varchar(5000) ---查詢條件
,@TableName varchar(50)
,@DoCount AS bit=1 -- 0值返回記錄總數, 非 0 值則返回記錄
)
AS
begin tran
IF @DoCount=0
Goto GetCount
Else
Goto GetSearch
GetCount: --返回記錄總數
DECLARE @SearchSql AS Nvarchar(4000)
SET @SearchSql= 'SELECT Count(*) AS Total FROM '+@TableName+' WHERE IntReserve1=0'
exec sp_executesql @SearchSql
--print @SearchSql
COMMIT TRAN
return
GetSearch: --返回記錄
DECLARE @SqlQuery varchar(4000)
SET @SqlQuery='SELECT * FROM
(SELECT ROW_NUMBER() OVER (ORDER BY O.ID ) Row, * from '+@TableName+' O Where IntReserve1=0) as temp
WHERE Row BETWEEN '+cast(@startIndex as varchar) +' and '+cast(@startIndex+@pageSize-1 as varchar)+ @strsql
---print @SqlQuery
execute(@SqlQuery)
COMMIT TRAN
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人久久18免费网站图片| 亚洲深夜福利网站| 亚洲a成v人在线观看| 亚洲精品av在线播放| 久久久久久久色| 国产精品久久精品| 国产97色在线| 日韩电影大全免费观看2023年上| 久久久999精品免费| 狠狠色狠狠色综合日日小说| 午夜精品久久久久久久99热浪潮| 国产精品第一页在线| 亚洲美女性生活视频| 国产精品偷伦一区二区| 欧美成人性生活| 91wwwcom在线观看| 亚洲免费人成在线视频观看| 国产精品狼人色视频一区| 久久国产精品网站| 欧美极品美女电影一区| 日产日韩在线亚洲欧美| 精品在线小视频| 国产一区二区三区高清在线观看| 国产欧美亚洲视频| 色婷婷亚洲mv天堂mv在影片| 日韩电影中文字幕一区| 91香蕉亚洲精品| 欧美尤物巨大精品爽| 日韩久久午夜影院| 国产suv精品一区二区三区88区| 精品中文视频在线| 亚洲丝袜在线视频| 国产乱人伦真实精品视频| 国内偷自视频区视频综合| 日韩美女av在线| 最近中文字幕2019免费| 亚洲区一区二区| 欧美国产日本在线| 一区二区三区回区在观看免费视频| 国产精品丝袜高跟| 欧美xxxx综合视频| 久久国产精品久久精品| 国产精品高清网站| 中文字幕亚洲一区二区三区| 国产欧美一区二区三区视频| 亚洲一区二区三区四区在线播放| 成人免费淫片视频软件| 精品视频久久久久久| 精品国产欧美一区二区五十路| 午夜精品一区二区三区视频免费看| 亚洲影院在线看| 韩国三级电影久久久久久| 97在线观看免费高清| 91精品综合久久久久久五月天| 日本欧美国产在线| 国产精品久久999| 欧美视频第一页| 最新69国产成人精品视频免费| 亚洲电影免费观看| 亚洲japanese制服美女| 日韩风俗一区 二区| 国产精品一区二区久久精品| 国产极品jizzhd欧美| 亚洲第一视频在线观看| 久久精品国产综合| 中文字幕亚洲字幕| 九色精品美女在线| 狠狠干狠狠久久| 51视频国产精品一区二区| 国产成一区二区| 日韩av片电影专区| 亚洲男人天堂2024| 亚洲石原莉奈一区二区在线观看| 国产一区二区激情| 视频在线观看一区二区| 亚洲最大激情中文字幕| 在线观看欧美视频| 亚洲人成网7777777国产| 黑人巨大精品欧美一区二区| 91系列在线观看| 91禁国产网站| 中文字幕九色91在线| 欧美影院在线播放| 久久视频在线观看免费| 国产亚洲视频在线| 欧美日韩一区二区在线播放| 久久综合久久八八| 日韩亚洲精品电影| 一本色道久久88综合日韩精品| 538国产精品一区二区免费视频| 国产精品成人免费视频| 欧美成aaa人片免费看| 成人福利在线观看| 成人国产精品久久久久久亚洲| 精品国产区一区二区三区在线观看| 久久91亚洲精品中文字幕奶水| 午夜免费在线观看精品视频| 久久亚洲成人精品| 欧美性猛交xxxx免费看漫画| 午夜精品久久久久久99热| 欧美性受xxx| 亚洲精品成a人在线观看| 97超碰色婷婷| 欧美日韩国产精品| 色偷偷偷亚洲综合网另类| 欧美激情网站在线观看| 日本欧美精品在线| 国产午夜一区二区| 在线视频一区二区| 精品综合久久久久久97| 欧美巨猛xxxx猛交黑人97人| 欧美日韩成人在线观看| www国产亚洲精品久久网站| 日本高清视频精品| 国产女精品视频网站免费| 91精品久久久久久综合乱菊| 日本国产精品视频| 韩剧1988在线观看免费完整版| 欧美在线亚洲一区| 国产丝袜精品第一页| 亚洲成人av资源网| 国产欧美日韩精品专区| 久久人91精品久久久久久不卡| 亚洲女人被黑人巨大进入al| 亚洲自拍av在线| 在线激情影院一区| 97精品国产97久久久久久| 色妞一区二区三区| 成人xvideos免费视频| 久久影视免费观看| 日韩在线中文字幕| 91九色在线视频| 欧美高清电影在线看| 国产日韩欧美影视| 国产精品高清免费在线观看| 国产精品成人va在线观看| 久久综合亚洲社区| 亚洲国产女人aaa毛片在线| 九九热r在线视频精品| 综合136福利视频在线| 91九色视频在线| 中文字幕在线看视频国产欧美在线看完整| 97超碰蝌蚪网人人做人人爽| 国产精品久久在线观看| 国产精品欧美日韩久久| 在线播放精品一区二区三区| 亚洲国产成人精品久久| 国产午夜精品麻豆| 午夜精品久久久久久久99热| 青青草精品毛片| 国内精久久久久久久久久人| 欧美高清视频在线播放| 亚洲iv一区二区三区| 国模精品系列视频| 亚洲韩国日本中文字幕| 日韩av在线网址| 国产精品无码专区在线观看| 国产精品成人一区| 精品国产鲁一鲁一区二区张丽| 亚洲精品美女在线观看播放| 欧美极品少妇xxxxⅹ免费视频| 国产亚洲欧美日韩精品| 中国人与牲禽动交精品| 久久久免费高清电视剧观看|