1. 程式人生 > >Mysql 分頁語句limit的用法

Mysql 分頁語句limit的用法

一:在我們使用查詢語句的時候,有時會需要返回查詢結果的前幾條或中間幾天資料,此時我們就可以使用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,@[email protected] 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用法

1、Mysql的limit用法 在我們使用查詢語句的時候,經常要返回前幾條或者中間某幾行資料,這個時候怎麼辦呢?不用擔心,mysql已經為我們提供了這樣一個功能。 Sql程式碼   SELECT * FROMtable LIMIT [offset,] rows 

Mysql 語句limit用法

一:在我們使用查詢語句的時候,有時會需要返回查詢結果的前幾條或中間幾天資料,此時我們就可以使用Mysql的Limit分頁語句; 語句原型如下: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset Li

mysql語句優化

覆蓋索引 通常開發人員會根據查詢的where條件建立合適的索引。 但是mysql可以使用索引來直接獲取列的資料,就不用回表查詢,也就是說這種索引包含(也稱覆蓋)所有需要查詢的欄位的值,就稱這種索引為覆蓋索引 利用表的覆蓋索引來加速分頁查詢 我們都知道,利用了索引查詢的語句中如果只包含

mysql 查詢limit中偏移量offset過大導致效能問題

      在業務中經常會遇到關於分頁的需求,這就會經常會用到MySQL中的limit offset,rows來分段取出每頁中需要的資料。但是當資料量足夠大的時候,limit條件中的偏移量offset越大就越會導致效能問題,導致查詢耗時增加嚴重。先看一下測試:

Mysql查詢limit逗號和offset 區別

SELECT  keyword  FROM  `keywords`  WHERE  id='59' ORDER BY   keyword  LIMIT 2  OFFSET 1; 比如這個SQL ,這裡表示的是從第一條資料(不包括第一條)開始讀取2條資料。 -----

mysql 語句

mysql 分頁 一種方式 select * from table where id <= (select id from t order by id desc limit 0,1) order by id limit 3; 第二種方式 select * from e

Mybatis3, 基於Mybatis Generator外掛生成MYSQL語句

http://ibatis.apache.org/docs/tools/ibator/reference/pluggingIn.html Mybatis Generator外掛物理分頁,適用於targetRuntime="MyBatis3" package com

Mysql,資料量大時limit優化

MYSQL的優化是非常重要的。其他最常用也最需要優化的就是limit。mysql的limit給分頁帶來了極大的方便,但資料量一大的時候,limit的效能就急劇下降。 同樣是取10條資料 select * from order limit 10000,10 select * from or

MySql SQL 大資料量limit替代和優化(試驗)

select SQL_NO_CACHE u.id, u.user_id, u.user_name, u.user_name_index, u.email, u.pwd, u.email_token, u.email_active_date, u.

mysql查詢語句怎麼寫?

是用limit函式 取前5條資料 select * from table_name limit 0,5  或者 select * from table_name limit 5  查詢第11到第15條資料 select * from table_name li

MYSQL語法,limit語法

1   為什麼要使用分頁        因為生產環境資料很多,一張表的資料量有時會達到幾百萬,不使用分頁會增加伺服器壓力,以及使用者體驗性2  MYSQL如何分頁    只要在原查詢語句基礎上加上 limit3  limit語法        1      limit放在SQ

關於SQLServer和MySQL 查詢語句區別

首先來定義幾個要用到的引數(例子) t_user資料表  int currentPage ; //當前頁 int pageRecord ; //每頁顯示記錄數 關於SqlServer資料庫   分頁SQL語句為:            String sql = "sel

mysql查詢語句

分頁需求: 前端通過傳遞start(頁碼),limit(每頁顯示的條數)兩個引數去分頁查詢資料庫表中的資料,MySql資料庫提供了分頁的函式limit m,n,其中m的引數是從第幾條記錄開始,n

資料庫學習--mysql 查詢語句

 單條 SQL 語句的分頁 SQL 方法1: 適用於 SQL Server 2000/2005 SELECT TOP 頁大小 * FROM table1 WHERE id NOT IN ( SELECT TOP 頁大小*(頁數-1) id FROM table1 ORD

MYSQLlimit速度太慢優化方法

在mysql中limit可以實現快速分頁,但是如果資料到了幾百萬時我們的limit必須優化才能有效的合理的實現分頁了,否則可能卡死你的伺服器哦。當一個表資料有幾百萬的資料的時候成了問題!如 * from table limit 0,10 這個沒有問題 當 limit 2000

常用sql 語句(Oracle)

part strong spa 數據 rac syntax tween 另類 排序 常用的Oracle查詢語句 1.無ORDER BY排序的寫法。(效率最高) 經過測試,此方法成本最低,只嵌套一層,速度最快!即使查詢的數據量再大,也幾乎不受影響,速度依然! sql語句如下:

MySQL優化中的“INNER JOIN方式優化算法”到底在什麽情況下會生效?

表結構 files key 效率 ref 兩個 ges 參考 如果 本文出處:http://www.cnblogs.com/wy123/p/7003157.html 最近無意間看到一個MySQL分頁優化的測試案例,並沒有非常具體地說明測試場景的情況下,給出了

PHP+MySQL顯示示例分析

moc dwl _array t-sql 4g+ scw zax d+ ffi Web開發是今後分布式程式開發的主流,通常的web開發都要涉及到與數據庫打交道,客戶端從服務器端讀取通常都是以分頁的形式來顯示,一頁一頁的閱讀起來既方便又美觀。所以說寫分頁程序是web開發的一個

Oracle中語句的寫法

where select sql span -s light 語句 emp pre select empno,ename,r from (select empno,ename,rownum r from emp) where r<11 and r>4

Mysql處理(PageHelper)

展示 文件中 感覺 但是 pre 模糊查詢 map art lec 第一次做分頁處理(完全不知道分頁處理到底要做成什麽樣?) 理解:其實就是前臺頁面通過傳遞不同的參數{1.查詢的條件。2.查詢頁數(pageNum),3每頁展現的條數(pageSize)},之後我們(只做後臺