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

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

分頁存儲過程(二)在sqlserver中返回更加準確的分頁結果

2024-08-31 00:58:47
字體:
來源:轉載
供稿:網友
在我的使用SQL Server2005的新函數構造分頁存儲過程中,我提到了使用ROW_NUMBER()函數來代替top實現分頁存儲過程。

但是時間長了,又發現了新問題,就是主子表的分頁查詢。例如:訂單表和訂單明細表,要求是查詢訂單,第二頁,每頁10條

復制代碼 代碼如下:


--使用row_unmber()實現分頁
--本來我們想要的結果是10條訂單,結果卻不是10條訂單,而是10條明細
--其實是針對的子表進行分頁了,訂單并不是要顯示的個數,出來的個數是明細的個數
--就是因為主表和子表聯合查詢的結果,主表記錄和子表記錄是1:N的關系,一個主表記錄有多個明細
select * from
(SELECT ROW_NUMBER () OVER (ORDER BY oi.createdate DESC) AS rownumber,oi.orderseqno ,od.OrderDetailID
FROM OrderInfo oi LEFT JOIN OrderDetail od ON oi.OrderSeqNO=od.OrderSeqNO
WHERE oi.OrderSeqNO LIKE '%2%'
) AS o
WHERE rownumber BETWEEN 10 AND 20


結果如下圖

分頁存儲過程(二)在sqlserver中返回更加準確的分頁結果

很明顯不是10條訂單,而是10條明細。

  下面是對查詢的一點改進,使用了游標

復制代碼 代碼如下:


--解決上面的問題,有以下幾種辦法
--1、先根據條件查詢主表記錄,然后在C#代碼中循環,再次到數據庫查詢每條主表記錄的明細信息,然后賦值給屬性
--2、在數據庫的存儲過程中使用游標,也是先查詢主表記錄,然后使用游標循環的過程中,查詢子表信息,然后在C#中
--集中處理
--很顯然,后一種減少了數據庫的往來開銷,一次獲取了想要的數據,個人認為要比第一種好,歡迎大家一起討論更好的辦法
--需要注意的就是ROW_NUMBER()返回的類型是bigint,而不是int
--下面是游標的存儲過程
--建立主表臨時表
CREATE TABLE #temp
(
rownumber bigint,
orderseqno VARCHAR(36),
goodsname VARCHAR(50),
companyname VARCHAR(100)
)
--建立子表臨時表
CREATE TABLE #detail
(
orderseqno VARCHAR(36),
detailid UNIQUEIDENTIFIER,
unitprice DECIMAL(12,2),
Qty int
)
--插入主表數據到主表臨時表
insert into #temp
SELECT oo.rownumber, oo.OrderSeqNO, oo.GoodsName, oo.CompanyName FROM
(SELECT ROW_NUMBER () OVER (ORDER BY oi.createdate DESC) AS rownumber,
oi.OrderSeqNO, oi.GoodsName ,ci.CompanyName
FROM OrderInfo oi INNER JOIN CompanyInfo ci ON oi.CompanyID=ci.CompanyID
WHERE oi.CreateDate<GETDATE()
) AS oo
WHERE rownumber BETWEEN 10 AND 20
--定義游標
DECLARE @temp_cursor CURSOR
--給游標賦值
SET @temp_cursor=CURSOR FOR SELECT #temp.orderseqno,#temp.goodsname FROM #temp
--定義游標循環過程中所需保存的臨時數據
DECLARE @orderseqno VARCHAR(36),@goodsname varchar(50)
--打開游標
OPEN @temp_cursor
FETCH NEXT FROM @temp_cursor INTO @orderseqno,@goodsname
--循環游標,查詢子表數據,然后插入子表臨時表
WHILE @@FETCH_STATUS=0
BEGIN
INSERT INTO #detail
SELECT od.OrderSeqNO,od.OrderDetailID, od.UnitPrice,od.Qty
FROM OrderDetail od
WHERE od.OrderSeqNO=@orderseqno
FETCH NEXT FROM @temp_cursor INTO @orderseqno,@goodsname
END
--關閉游標
CLOSE @temp_cursor
DEALLOCATE @temp_cursor
SELECT * FROM #temp
SELECT * FROM #detail
--刪除臨時表
DROP TABLE #temp
DROP TABLE #detail


結果如下圖,馬上看到效果就變了,歡迎大家一起討論更好的,更精準的分頁查詢。

分頁存儲過程(二)在sqlserver中返回更加準確的分頁結果

 

  上面的T-SQL只在SQL Server 2005上調試成功。
推薦一篇MS SQL Server的查詢計劃的相關內容,可以利用它優化SQL,寫的不錯。引用:SqlServer 執行計劃及Sql查詢優化初探

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91国偷自产一区二区三区的观看方式| 91久久国产综合久久91精品网站| 日韩欧美在线第一页| 日韩精品在线视频观看| 91免费福利视频| 国产盗摄xxxx视频xxx69| 尤物yw午夜国产精品视频| 亚洲品质视频自拍网| 久久九九热免费视频| 精品久久久久久中文字幕| 亚洲网站在线播放| 亚洲色图综合网| 91av在线视频观看| 97福利一区二区| 亚洲欧洲高清在线| 精品成人69xx.xyz| 日韩成人在线视频网站| 最近2019好看的中文字幕免费| 九九九热精品免费视频观看网站| 欧美午夜视频在线观看| 午夜精品久久久久久久久久久久| 国产婷婷色综合av蜜臀av| 色噜噜狠狠狠综合曰曰曰88av| 亚洲va欧美va国产综合久久| 亚洲电影免费在线观看| 性欧美激情精品| 久久久人成影片一区二区三区观看| 91精品中文在线| 欧美激情a∨在线视频播放| 精品国产91久久久久久| 久久久久久999| 色综合天天综合网国产成人网| 日韩av电影在线播放| 国产精品福利在线观看网址| 97在线看免费观看视频在线观看| 亚洲免费电影一区| 欧美在线视频网站| 欧美日韩免费一区| 国产精品成人久久久久| 欧美大片网站在线观看| 日韩中文第一页| 久久免费视频这里只有精品| 91色在线视频| 亚洲高清av在线| 国产欧美最新羞羞视频在线观看| 亚洲男人天堂九九视频| 欧美黄色成人网| 国产在线精品一区免费香蕉| 亚洲在线一区二区| 亚洲国产精品久久久| 亚洲激情第一页| 国产成人a亚洲精品| 国产精品一区二区久久久| 久久久亚洲成人| 在线视频中文亚洲| 午夜精品久久久久久99热| 欧美交受高潮1| 精品二区三区线观看| 欧美日韩性视频在线| 国产一区深夜福利| 欧美精品videos性欧美| 亚洲男人天堂古典| 爱福利视频一区| 91免费视频国产| 亚洲成人网在线| 亚洲欧洲午夜一线一品| 亚洲中国色老太| 欧美日本黄视频| 亚洲精品在线观看www| 8090理伦午夜在线电影| 国产suv精品一区二区三区88区| 久久久97精品| 国产亚洲美女久久| 精品久久久在线观看| 亚洲一区二区免费| 日韩视频在线免费| 亚洲激情自拍图| 日韩在线观看免费全| 蜜臀久久99精品久久久久久宅男| 欧美大片欧美激情性色a∨久久| 亚洲网在线观看| 91高清视频免费观看| 国产女同一区二区| 91精品在线国产| 成人免费观看49www在线观看| 日韩高清不卡av| 国产在线视频91| 精品久久久久久久久国产字幕| 久久亚洲国产成人| 国产精品自拍小视频| 精品亚洲夜色av98在线观看| 国产精品久久久久7777婷婷| 久久久亚洲成人| 日韩亚洲在线观看| 97精品久久久中文字幕免费| 欧美激情欧美狂野欧美精品| 日韩在线视频线视频免费网站| 91久久精品久久国产性色也91| 亚洲成人黄色网址| 国产精品久久77777| 国模精品一区二区三区色天香| 日韩专区中文字幕| 国产精品久久久久久久久久久久久| 91中文精品字幕在线视频| 911国产网站尤物在线观看| 亚洲美女免费精品视频在线观看| 亚洲毛片一区二区| 午夜精品久久17c| 欧美人在线观看| 久久香蕉国产线看观看网| 色婷婷亚洲mv天堂mv在影片| 亚洲欧美一区二区三区四区| 欧美老妇交乱视频| 美女福利视频一区| 国产午夜精品麻豆| 成人乱色短篇合集| 日韩大片在线观看视频| 日韩av电影中文字幕| 日本午夜精品理论片a级appf发布| 7777免费精品视频| 国产精品午夜一区二区欲梦| 欧美日产国产成人免费图片| 国产亚洲激情在线| 国产精品揄拍500视频| 国产在线视频欧美| 一区二区三区视频观看| 久久久精品一区| 亚洲人永久免费| 日韩风俗一区 二区| 久久久久久久久国产| 久久网福利资源网站| 亚洲韩国欧洲国产日产av| 亚洲精品欧美极品| xxav国产精品美女主播| 国产美女久久久| 欧美一区二区三区免费视| 成人av在线亚洲| 秋霞成人午夜鲁丝一区二区三区| 91精品啪在线观看麻豆免费| 欧美成人午夜影院| 777国产偷窥盗摄精品视频| 欧美激情在线有限公司| 久热精品视频在线| 久久久91精品国产一区不卡| 久久精品国产久精国产思思| 欧美在线视频在线播放完整版免费观看| 精品国产一区二区三区久久狼5月| 久久久精品一区二区| 欧美福利视频在线观看| 久久99国产精品久久久久久久久| 欧美精品精品精品精品免费| 69av在线视频| 欧美成年人视频| 欧美日韩精品在线视频| 亚洲成人免费网站| 精品国产精品三级精品av网址| 成人伊人精品色xxxx视频| 国产丝袜一区视频在线观看| 中文字幕久久精品| 精品网站999www| 欧美激情一区二区三区久久久| 欧美日韩在线一区| 精品亚洲夜色av98在线观看| 亚洲欧美制服第一页|