常見資料庫分頁SQL語句

2021-04-19 09:51:52 字數 2653 閱讀 6677

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

例如從表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

***************

pagezize=5;page=2

select a.* from (select * from department order by depname) a where rownum<10 

minus (select * from  (select * from department order by depname) b where rownum<5)

mysql資料庫

my sql資料庫最簡單,是利用mysql的limit函式,limit [offset,] rows從資料庫表中的第m條記錄開始檢索n條記錄的語句為:  

select * from table(表名) limit startpos,pagesize

startpos:定義當前頁起始位置 注意:當前頁的起始位置只能在當前頁確定之後才能定義;

pagesize:定義每頁顯示資料的條數

如果給定2個引數,第乙個指定要返回的第一行的偏移量,第二個指定返回行的最大數目。初始行的偏移量是0(不是1)。

如:select * from table limit 5,10;           這個查詢出來的是第6到15之間的10條資料

如果給定乙個引數,它指出返回行的最大數目。

如:select * from table limit 5;                 這個查詢出來的是前5條資料

(limit n等價於limit 0,n)

三類資料庫中進行分頁查詢的高效率方法(現在來看):

oracle:  

select * from (       

select my_table.*,rownum as my_rownum from (     

/** 括號裡寫實際的需要查詢的sql語句**/

) as mytable where rownum <=200/**這裡是一頁中的最後一條記錄**/   

) where my_rownum>=10 /**這裡是一頁中的第一條記錄**/

sqlserver: 

select * from (

select top 頁面容量 * from (

select top 頁面容量*當前頁碼 * from

表 where 條件 order by 欄位a asc

)as  temptable1 order by 欄位a desc 

) as temptable2 order by 欄位a asc

mysql:    

select 語句 limit 頁面的第一條記錄-1,頁面容量

要定義的變數→當前頁數:curr       每頁顯示條數:page

mysql :

select from 表名 limit (curr-1)*page

mssql2000:

select top page * from 表名 where 主鍵 not in (select top (curr-1)*page 主鍵 from 表名 order by 主鍵)

oracle:

select * from (select rownum temp_rownum,temp_table.* from (select * from 表名

) temp_table where  rownum< curr * page + 1) where temp_rownum>= (curr - 1) * page + 1

order by 主鍵 desc

常見資料庫分頁SQL語句

我們在編寫mis系統和web應用程式等系統時,都涉及到與資料庫的互動,如果資料庫中資料量很大的話,一次檢索所有的記錄,會占用系統很大的資源,因此我們常常採用,需要多少資料就只從資料庫中取多少條記錄,即採用分頁語句。根據自己使用過的內容,把常見資料庫sql server,oracle和my sql的分...

常見資料庫分頁SQL語句

sql server 從資料庫表中的第m條記錄開始取n條記錄,利用top關鍵字 注意如果select語句中既有top,又有order by,則是從排序好的結果集中選擇 select from select top n from select top m n 1 from 表名稱 order by 主...

常見資料庫分頁SQL語句

我們在編寫mis系統和web應用程式等系統時,都涉及到與資料庫的互動,如果資料庫中資料量很大的話,一次檢索所有的記錄,會占用系統很大的資源,因此我們常常採用,需要多少資料就只從資料庫中取多少條記錄,即採用分頁語句。根據自己使用過的內容,把常見資料庫sql server,oracle和my sql的分...