一:在我們使用查詢語句的時候,有時會需要返回查詢結果的前幾條或中間幾天資料,此時我們就可以使用mysql的limit分頁語句;
語句原型如下:
select * from table limit [offset,] rows | rows offset offset
limit接受乙個或兩引數,並且都必須是整型常量;第乙個引數是起始偏移量(預設從0開始),第二個引數是返回的行數;
看如下示例:
mysql> select * from table limit 5,10; // 檢索記錄行 6-15
//為了檢索從某乙個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 -1:
mysql> select * from table limit 95,-1; // 檢索記錄行 96-last. --這個好像用不了了,執行會報錯
//如果只給定乙個引數,它表示返回最大的記錄行數目:
mysql> select * from table limit 5; //檢索前 5 個記錄行
//換句話說,limit n 等價於 limit 0,n。
注:但資料很大時可以試著用1):子查詢:
select * from articles where id >=
(select id from articles where category_id = 123 order by id limit 10000, 1) limit 10
2):join分頁方式:
select * from `content` as t1
join (select id from `content` order by id desc limit ".($page-1)*$pagesize.", 1) as t2
where t1.id <= t2.id order by t1.id desc limit $pagesize;
二:在oracle使用分頁查詢:
select * from (select rownum r,t1.* from 表名稱 t1 where rownum < m + n) t2
where t2.r >= m
三:在sqlserver中使用分頁查詢(使用top語句):
select top 10 *
from testtable
where (id >
(select max(id)
from (select top 20 id
from testtable
order by id) as t))
order by id
或使用游標儲存過程分頁:
create procedure xiaozhengge
@sqlstr nvarchar(4000), --查詢字串
@currentpage int, --第n頁
@pagesize int --每頁行數
as
set nocount on
declare @p1 int, --p1是游標的id
@rowcount int
exec sp_cursoropen @p1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 總頁數--,@rowcount as 總行數,@currentpage as 當前頁
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @p1,16,@currentpage,@pagesize
exec sp_cursorclose @p1
set nocount off
mysql 分頁limit 語句
前些日子用了limit語句來進行分頁取值,今天突然發現,我竟然一直用錯了。mysql的limit子句 limit子句可以被用於強制 select 語句返回指定的記錄數。limit接受乙個或兩個數字引數。引數必須是整數常量。若給定兩個引數,第乙個引數指定第乙個返回記錄行的偏移量,第二個引數指定返回記錄...
mysql分頁limit 優化
mysql的分頁比較簡單,只需要limit offset,length就可以獲取資料了,但是當offset和length比較大的時候,mysql明顯效能下降 1.子查詢優化法 先找出第一條資料,然後大於等於這條資料的id就是要獲取的數 缺點 資料必須是連續的,可以說不能有where條件,where條...
Mysql分頁LIMIT分析
表結構 select id from table limit 2,4 返回結果 3,4,5,6 select id from table limit 3,4 返回結果 4,5,6,7 select id from table limit 3,5 返回結果 4,5,6,7,8 由以上結果可分析得到論 ...