討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 討論區最近新進100則主題
[ 回上頁 ] [ 討論區發言規則 ]
如何取得查詢結果的第11-20筆資料
更改我的閱讀文章字型大小
作者 : arkship(ark)
[ 貼文 6 | 人氣 1407 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/12/17 上午 09:40:04
p_c    p_t
aaa    1
bbb    2
ccc     3
ddd    4
...
---------------
資料就這樣延續下去,我只會查詢前n筆資料,
要查某一筆到某一筆之間的要怎麼寫啊?
有人可以指點一下嗎?
作者 : gwuu(Gordon) 貼文超過500則
[ 貼文 668 | 人氣 7592 | 評價 770 | 評價/貼文 1.15 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/12/17 上午 09:51:20
好像不行耶
你為什麼要取某一筆到某一筆的資料,
如果一定要的話,
1.可以將資料取回之後用你的AP處裡
2.新增一個field(如p_t) select * from table where p_t >10 and P_t <=20
3.用view 和cursor(太麻煩了)
作者 : arkship(ark)
[ 貼文 6 | 人氣 1407 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/12/17 上午 09:59:04

>好像不行耶
>你為什麼要取某一筆到某一筆的資料,
>如果一定要的話,
>1.可以將資料取回之後用你的AP處裡
>2.新增一個field(如p_t) select * from table where p_t >10 and P_t <=20
>3.用view 和cursor(太麻煩了)
就是有點類似討論區那種感覺
一次10筆的顯示
如果資料有100筆
不是要分十次顯示
所以才想要某一段的資料
作者 : arkship(ark)
[ 貼文 6 | 人氣 1407 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/12/17 上午 09:59:29
就是有點類似討論區那種感覺
一次10筆的顯示
如果資料有100筆
不是要分十次顯示
所以才想要某一段的資料
作者 : gwuu(Gordon) 貼文超過500則
[ 貼文 668 | 人氣 7592 | 評價 770 | 評價/貼文 1.15 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/12/17 上午 10:13:21
你是用ASP寫的嗎?以下是部份的code你可以參考看看
   set rs = Server.CreateObject ("ADODB.RECORDSET")
   rs.Open sSQL,adoconnectT,1,1
   REC_CNT = RS.RecordCount
   RS.PageSize=PageMax
   PageCount = RS.PageCount
   If rs.eof Then

   Else
     i = 0
     RS.AbsolutePage = PAGE
     do while rs.eof=false
        i=i+1
%>
                <TR> 
                  <td nowrap VALIGN="MIDDLE" bgcolor="<%=sBGCOLOR%>" class="tbContent" width="16%">  <A href=pgASNDat.asp?TraID=<%=Null2Space(rs("TraID"))%>&ACT=<%=vACT%>&PAGE=<%=PAGE%>><%=Null2Space(rs("TraID"))%></A></TD>
                </TR>
                <%
       If i >= PageMax Then Exit do
       rs.movenext
     loop
  End IF
作者 : luo673(小琳) VB.Net卓越專家Visual Basic優秀好手貼文超過500則
[ 貼文 630 | 人氣 720 | 評價 3940 | 評價/貼文 6.25 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/12/17 下午 12:06:13
:::
SELECT *
FROM Orders AS O1
WHERE (SELECT COUNT(*) FROM Orders AS O2
  WHERE O2.OrderID <= O1.OrderID) BETWEEN 11 AND 20
  ORDER BY OrderID
作者 : arkship(ark)
[ 貼文 6 | 人氣 1407 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/12/17 下午 12:23:50

>:::
>SELECT *
>FROM Orders AS O1
>WHERE (SELECT COUNT(*) FROM Orders AS O2
>  WHERE O2.OrderID <= O1.OrderID) BETWEEN 11 AND 20
>  ORDER BY OrderID
>
多謝,我在自己試試看
這語法有達到我想要的部分效果
感謝大家的熱心
作者 : gwuu(Gordon) 貼文超過500則
[ 貼文 668 | 人氣 7592 | 評價 770 | 評價/貼文 1.15 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/12/17 下午 01:44:40
小琳的方法可以取得查詢結果的第11-20筆資料

但是ark你要的分頁功能如果這樣做是不好的,因為要一直去下SQL指令

最好是一次取回之後再做分頁處理
作者 : arkship(ark)
[ 貼文 6 | 人氣 1407 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/12/17 下午 01:51:42
這樣應該比較省系統資源
但是asp那段我看巄無(不會ASP)
jsp也才學,力不從心喔>.<
可一解釋的容易懂一些嗎
作者 : gwuu(Gordon) 貼文超過500則
[ 貼文 668 | 人氣 7592 | 評價 770 | 評價/貼文 1.15 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/12/17 下午 02:08:09
如果一直查詢才會浪費database server的資源
如果是用JSP(可以到JSP討論區找到)的話你把查詢的結果放到
ResultSet rs 中
pagesize = 10每頁顯示10筆
pg 目前是第幾頁
rs.absolute((pg-1)*10+1);

do {
  recCnt++;
  show你要的資料
} while(rs.next()&&recCnt!=pagesize);
作者 : flair(flair) 人氣指數超過10000點
[ 貼文 104 | 人氣 13327 | 評價 0 | 評價/貼文 0 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/7/7 下午 08:58:57
難道沒有較為簡單的寫法嗎?
作者 : ally(oneal)
[ 貼文 12 | 人氣 628 | 評價 50 | 評價/貼文 4.17 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/7/11 下午 05:45:01
>如果一直查詢才會浪費database server的資源
>如果是用JSP(可以到JSP討論區找到)的話你把查詢的結果放到
>ResultSet rs 中
>pagesize = 10每頁顯示10筆
>pg 目前是第幾頁
>rs.absolute((pg-1)*10+1);
>
>do {
> recCnt++;
> show你要的資料
>} while(rs.next()&&recCnt!=pagesize);


我提供一種用SQL語法的作法
這種方法查出的ResultSet 筆數會剛好是你要的
from_rec=11;
to_rec=20;
page_row=from_rec-to_rec+1; //=10;

s1="SELECT * FROM (SELECT TOP 10 orderID, customerid FROM
     (SELECT TOP 20 orderID, customerid FROM orders ORDER BY
     orderid) D
     ORDER BY orderid DESC)
DERIVEDTBL ORDER BY orderID";
利用order by及 top 的特性
先把要的範圍select出來如前20筆
在倒著排一次取前10筆==>可取到11-20
在將最終10筆排序一次
如此所查詢之rs筆數會是最少的
在網頁(asp or jsp)傳輸上會比較有效率哦
 板主 : 徵求中
 > SQL Server 7/2000 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - SQL Server 7/2000 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
SQL Server 7/2000
1 小朱 1540 
2 小台 1520 
3 Gordon 600 
4 ㄉ一ˊㄎㄜˋ 580 
5 路人 490 
6 max 470 
7 william 410 
8 Aries 250 
9 阿利 180 
10 羅啟章 160 
SQL Server 7/2000
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.0625