台灣最大程式設計社群網站
線上人數
802
 
會員總數:243167
討論主題:187984
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 關於分頁的sql下法
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
關於分頁的sql下法
價值 : 10 QP  點閱數:123 回應數:3

樓主

想睡覺
初級專家
1308 263
4696 1248
發送站內信

請問一下
底下這段
string sql = "SELECT * FROM(SELECT ROW_NUMBER() OVER(" + config + ") as rowNumber, * FROM faq) myTable WHERE switch = 1 "+ getId +" AND rowNumber > " + (NowPageCount) + " AND rowNumber<= " + (NowPageCount + PageSize);

我遇到一個問題

這段語法 我設定分頁每頁顯示7筆
而 前7筆是可以正常執行的,
但到了第8筆後 就會查不到
我把這段sql 語法貼在資料表執行時 發現他的rownumber 並不是從1開始 而是接著從編號8 開始 ,所以 找不到是正常的
我該怎麼改 才會在資料表上的rownumber 每次搜尋是由1開始的呢?
因為sql server 很少接觸 語法和mysql 有點不一樣,想了解一下 謝謝



搜尋相關Tags的文章: [ sql ] ,
本篇文章發表於2018-08-30 17:34
== 簽名檔 ==
在學習的過程中沒有結束的一天.
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

想睡覺
檢舉此回應
補充一下 getId 是 給 ASP,NET partmats使用的 getId = "AND nID = @id"
而這邊的nID 是查詢分類編號
假設faq 資料表一共有15筆資料 1~7筆 分類編號為 1,8~15筆 分類為2
本篇文章回覆於2018-08-30 17:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

想睡覺
檢舉此回應
找到了
解決方法如下
SELECT * FROM(SELECT ROW_NUMBER() OVER( Partition By nID " + config + ") as rowNumber, * FROM faq) myTable WHERE switch = 1 "+ getId +" AND rowNumber > " + (NowPageCount) + " AND rowNumber<= " + (NowPageCount + PageSize);
本篇文章回覆於2018-08-30 17:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

MIS2000 Lab
檢舉此回應
分頁的SQL指令有很多種寫法

可以參考

[Youtube影片] ASP.NET資料分頁的SQL指令--ROW_NUMBER與OFFSET...FETCH
https://youtu.be/37q5qez6cbU

ADO.NET DataReader的分頁程式#1(搭配SQL指令 ROW_NUMBER)
https://dotblogs.com.tw/mis2000lab/archive/2010/11/30/datareader_paging_row_number.aspx

ADO.NET DataReader的分頁程式#3(搭配SQL 2012指令 OFFSET...FETCH)
https://dotblogs.com.tw/mis2000lab/archive/2014/07/17/page_sql2012_fetch_offset_20140717.aspx

資料分頁的最佳化,以SQL 2012的 OFFSET-FETCH為例
http://mis2000lab.pixnet.net/blog/post/33334543

無限下拉的資料呈現 (類似FaceBook,分頁效果)
http://mis2000lab.pixnet.net/blog/post/34529733
本篇文章回覆於2018-09-03 22:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.