各種資料庫分頁查詢sql語句大全

2021-07-11 17:35:17 字數 2490 閱讀 9781

在顯示記錄條目時往往要用到分頁,一種常用的辦法是利用各種資料庫自帶的定位介面對原始查詢語句進行改寫,從而只取出特定範圍的某些記錄。不同的資料庫,查詢定位介面是不一樣的,下面做一彙總:

資料庫分頁查詢語句

說明mysql

"query_sqllimit ?,?"         

使用limit關鍵字,第乙個"?"是起始行號,

第二個"?"是返回條目數

oracle

select * from 

( select a.*, rownum rn  from  

(query_sql) a  where rownum 

<= ?) where rn >= ?

結合rownum關鍵字,利用巢狀三層select 

語句實現。第乙個"?"表示終止行號,

第二個"?"表示其實行號

sql server

尚無通用語句

可使用top n來返回前n條記錄或使用儲存過程

db2

假設查詢語句:select t1.* from t1 order

by t1.id; 分頁語句可為:

"select * from ( select rownumber() over 

(order by t1.id) as row_, t1.* from t1 

order by t1.id) as temp_ where row_ 

between ?+1 and ?"

返回兩個"?"之間的記錄

interbase

query_sqlrow ? to ?」

返回兩個"?"之間的記錄

postgresql

query_sqllimit ? offset ?」

第乙個"?"為起始行號,第二個"?"代表

返回記錄數

sql server

關於分頁 sql 的資料許多,有的使用儲存過程,有的使用游標。本人不喜歡使用游標,我覺得它耗資、效率低;使用儲存過程是個不錯的選擇,因為儲存過程是顛末預編譯的,執行效率高,也更靈活。先看看單條 sql 語句的分頁 sql 吧。 

方法1: 

適用於 sql server 2000/2005 

select top 頁大小 * from table1 where id not in ( select top 頁大小*(頁數-1) id from table1 order by id ) order by id 

方法2: 

適用於 sql server 2000/2005 

select top 頁大小 * from table1 where id > ( select isnull(max(id),0) from ( select top 頁大小*(頁數-1) id from table1 order by id ) a ) order by id 

方法3: 

適用於 sql server 2005 

select top 頁大小 * from ( select row_number() over (order by id) as rownumber,* from table1 ) a where rownumber > 頁大小*(頁數-1) 

說明,頁大小:每頁的行數;頁數:第幾頁。使用時,請把「頁大小」以及「頁大小*(頁數-1)」替換成數碼。 

mysql

select * from tt limit 1,20 

select * from tt limit 21,30 

/*如果你是幾千上萬資料,就直接使用mysql自帶的函式 limit的普通用法就ok了,如果是100萬以上的資料,可能就要講方法了,下面我們來做個百萬級資料的分頁查詢語句.

mysql> select * from news where id>=(select id from news limit 490000,1) limit 10;    sec  //很 明顯,這 種方式勝出 .

mysql> select * from news limit 490000,10  sec;

*/

以下的文章主要介紹的是mysql分頁的實際操作方案,其實關於實現mysql分頁的最簡單的方法就是利用利用mysql資料庫的limit函式,limit [offset,] rows可以從mysql資料庫表中第m條記錄開始檢索n條記錄的語句為:

select * from 表名稱 limit m,n 

例如從表sys_option(主鍵為sys_id)中從第10條記錄開始檢索20條記錄,語句如下:

select * from sys_option limit 10,20   

select * from table [查詢條件] order by id limit ?,?   

oracle

各種資料庫分頁查詢sql語句

1.oracle資料庫分頁 select from select a.rownum rc from 表名 where rownum endrow a where a.rc startrow 2.db2資料庫分頁 select from select rownumber over as rc,a.fr...

各種資料庫分頁的sql語句

1.oracle資料庫分頁 select from select a.rownum rc from 表名 where rownum endrow a where a.rc startrow 2.db2資料庫分頁 select from select rownumber over as rc,a.fr...

各種資料庫的分頁查詢語句

1.oracle資料庫分頁 select from select a.rownum rc from 表名 where rownum endrow a where a.rc startrow 2.db2資料庫分頁 select from select rownumber over as rc,a.fr...