1. 程式人生 > >資料庫讀取資料如何讀取指定特定的幾行(分頁時用)

資料庫讀取資料如何讀取指定特定的幾行(分頁時用)

 mysql 不支援top n的寫法
top n的寫法是sql server 和access的寫法
mysql 只支援 limit n的寫法

select * from table limit <offset>,<rows>
offset為開始記錄索引;rows為查詢記錄數
查詢前10條記錄
select * from table limit 0,10

資料庫讀取資料如何讀取指定特定的幾行
 懸賞分:10 - 解決時間:2007-9-27 22:10
Asp.net 操作Access資料庫
像要讀取第三行至第八行資料,可以這樣"Select top 8 * from [table] where id > 3"
但是,有個問題就是,如果id > 3 && id < 8 之間的某些資料如果被刪除了的話,不就沒有讀取到了想要的資料行數..有什麼解決方法?
謝謝
問題補充:1樓說的
select * from [table] where id between 3 and 8
這樣取的是3-8之間的行資料
---------------------------------------------------
不能解決問題.如果id 3-8之間的某些資料被刪除了,就沒有讀到預期想要讀到的行數.
我想要的是,特定讀取資料中間部分的特定連續的行數,是第三行至第八行的資料都要讀出來,而不是讀id介於3-8的

select * from [table] where id between 3 and 8
這樣取的是3-8之間的行資料
回答者: aries1001 - 高階魔法師 六級   9-27 21:33
Select top 6 * from [table1] where id in (Select top 8 id from [table1]) order by id desc
回答者: xyphoenix - 總監 八級   9-27 21:47
Not sure if you can use this in access database, but it is how you do it in SQL server 2005:

SELECT * FROM lkTSTC
WHERE ROWNUM >=3
AND ROWNUM <=3


樓主是想對top 8的這8筆資料再做一次排序嗎,還是隻是想取得前8筆資料啊

如果是後者那"select top 8 * from YIJIFENLEI"就可以了,top本身就是去取排序後的前幾位的.

如果是前者就用"select top 8 * from (select top 8 * from YIJIFENLEI) a order by a.j",先取再排序