sql server資料庫
從資料庫表中的第m條記錄開始取n條記錄,利用top關鍵字:注意如果select語句中既有top,又有order by,則是從排序好的結果集中選擇:
select *
from ( select top n *
from (select top (m + n - 1) * from 表名稱 order by 主鍵 desc) t1 ) t2
order by 主鍵 asc
例項:
select * from ( select top pagesize * from ( select top pagesize*cureentpage * from user_table order by id asc ) as asystable order by id desc ) as bsystable order by id asc
例如從表sys_option(主鍵為sys_id)中從10條記錄還是檢索20條記錄,語句如下:
select *
from ( select top 20 *
from (select top 29 * from sys_option order by sys_id desc) t1) t2
order by sys_id asc
oralce資料庫
從資料庫表中第m條記錄開始檢索n條記錄
select *
from (select rownum r,t1.* from 表名稱 t1 where rownum < m + n) t2
where t2.r >= m
例如從表sys_option(主鍵為sys_id)中從10條記錄還是檢索20條記錄,語句如下:
select *
from (select rownum r,t1.* from sys_option where rownum < 30 ) t2
where t2.r >= 10
mysql資料庫
my sql資料庫最簡單,是利用mysql的limit函式,limit [offset,] rows從資料庫表中m條記錄開始檢索n條記錄的語句為: select * from 表名稱 limit m,n
例如從表sys_option(主鍵為sys_id)中從10條記錄還是檢索20條記錄,語句如下:
select * from sys_option limit 10,20
sybase的分段取資料一般通過程式控制。
1、首先按照當前查詢條件查詢符合條件的紀錄總數;
2、其次使用者提交的當前記錄的開始位置(通常通過分頁導航鏈結得到)以及一頁規定顯示的記錄數目(由程式設定);
3、根據設定的每頁記錄數目與步驟1中得到的記錄總數計算,得出頁數;
4、生成分頁導航鏈結;
5、最後在取得查詢結果時通過步驟2中得到的記錄開始位置和每頁記錄數目限制查詢結果數目。
以下簡單舉例
定義方法幾個必要的方法:
docount(string asql)//按條件查詢記錄總數 //引數為查詢sql
getresultset(resultset rs, int rownum, int pagesize)//匯出從rownum開始
//數目為pagesize的所有記錄
一般通過以上兩個方法配合你的查詢方法即可實現。
其中對getresultset()方法說明:
這個方法其實每次查詢結果都是一樣的,僅是在匯出查詢結果時控制匯出開始的位置和數量。
在方法中可以通過很多演算法實現匯出從rownum開始數目為pagesize的所有記錄。最簡單的辦法,設定乙個for迴圈計數,使得每次取出資料是從rownum開始的(即計數rownum次,小於rownum則continue,否則開始取出記錄)。
sybase不支援這樣的關鍵字。這個問題我很早就諮詢過sybase公司,無論是sybase ase還是sybase iq都不支援。
資料庫分頁技術
1 無order by排序的寫法。效率最高 經過測試,此方法成本最低,只巢狀一層,速度最快!即使查詢的資料量再大,也幾乎不受影響,速度依然!select from select rownum as rowno,t.from k task t where flight date between to ...
SQL 資料庫分頁技術
分頁方案一 利用not in和select top分頁 語句形式 select top 10 from testtable where id not in select top 20 id from testtable order by id order by id select top 頁大小 f...
常用資料庫分頁語句
select from cat limit select from cat limit 20000,100 從cat表中第20000條開始取出100條記錄,即記錄號為20000到20099的記錄 select from cat limit select from cat limit 100 從cat...