看板 C_Sharp 關於我們 聯絡資訊
※ 引述《tomex (Tomex Ou)》之銘言: : ASP.NET網頁設計裏, : 原以為觀看detail資料的下方有個上一頁/下一頁很簡單 : 發現ASP.NET的Paper都是丟所有資料Datable : 我嫌這樣資料量太大(畢竟只有1筆而己) : 改用手寫下sql方式。 : 以為多下兩道大於或小於該key值的sql就好 : 但是考量此上/下頁的順序, : 是根據前頁資料列表的排序規則(可能多欄排序) : 細想之下,發現真的不簡單... : 因為sql表中的資料並不一定連續。 : 請問該如何在不查詢所有資料下 : 得到指定筆項目的上/下筆資料呢? : 難道最終仍是得把所有資料取出嗎? : 不甘心呀!! 可以將上一頁的排序規則Keep到下一頁 存入ViewState中 之後Detail Page查的時候 依照之前的排序取出 SQL 2005前 取範圍的資料的方法 Select * FROM (Select Top 40000 * from Table Order by 排序欄位 ) A where Not Exists ( Select * From (Select top 20000 id from Table Order by 排序欄位 ) B where A.id=B.id ) SQL 2005後 SELECT * FROM ( SELECT *,ROW_NUMBER() OVER (ORDER BY 排序欄位 DESC) AS RowNumber FROM Table ) T WHERE T.RowNumber BETWEEN 20000 AND 40000 第一段的速度較快...Row_number()比較慢 如果你有用LINQ 那又是另外的語法了... -- 不知道我是不是有理解錯誤...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.28.55
tomex:因為我是用get方式到另一頁,也不想把頁碼傳入(url太雜) 06/20 09:47
tomex:後來決定還是把所有key取出作過濾,解決這樣的需求 06/20 09:48
tomex:至少它比datasource或完全的datatable省資料囉! 06/20 09:48
teyou:唉~細看需求還是不是很了解.. 06/20 18:33