Mysql之limit用法總結

2021-10-11 13:29:05 字數 1873 閱讀 7764

limit 子句可以被用於強制 select 語句返回指定的記錄數。limit 接受乙個或兩個數字引數,引數必須是乙個整數常量。如果給定兩個引數,第乙個引數指定第乙個返回記錄行的偏移量,第二個引數指定返回記錄行的最大數目。初始記錄行的偏移量是 0(而不是 1): 為了與 postgresql 相容,mysql 也支援句法: limit # offset #。

select * from table  limit [offset,] rows | rows offset offset

引數:

1、查詢第一行記錄:

select * from table limit 1 

2、查詢前n行記錄 

select * from table limit 0,n; 

或 select * from table limit n; //如果只給定乙個引數,它表示返回最大的記錄行數目

3、查詢後n行記錄 

select * from table order by id desc limit n;//倒序排序,取前n行 id為自增形式 

4、查詢第n行記錄

select * from table limit n-1,1; // 返回第n行 

select * from table limit 3,1; // 返回第4行 

4、查詢第n行到第m行記錄

select * from table limit n-1,m-n+1; 

select * from table limit 5,10;返回第6行到第15行的記錄 

5、/檢索從某乙個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 -1:

select * from table limit 95,-1; // 檢索記錄行 96-last.

注:這種寫法本身就是錯的,雖然它可以在之前的版本中執行(低優先順序),新版本的mysql對此做出了修復,現在的替代方法是第二個引數用乙個較大的正數代替。比如你寫個

select * from table limit 95,10000; // 檢索記錄行 96-last.

感覺這方法很蠢,然鵝我並沒有更好的方法,呵呵

附錄:offset

為了與 postgresql 相容,mysql 也支援句法: limit # offset #。

經常用到在資料庫中查詢中間幾條資料的需求

比如下面的sql語句:

selete * from testtable limit 2,1;

selete * from testtable limit 2 offset 1;

注意:1.資料庫資料計算是從0開始的

2.offset x是跳過x個資料,limit y是選取y個資料

3.limit  x,y  中x表示跳過x個資料,讀取y個資料

這兩個都是能完成需要,但是他們之間是有區別的:

(1)是從資料庫中第三條開始查詢,取一條資料,即第三條資料讀取,一二條跳過

(2)是從資料庫中的第二條資料開始查詢兩條資料,即第二條和第三條。

Mysql分頁之limit用法與limit優化

與oracle和ms sqlserver相比,mysql的分頁方法簡單的讓人想哭。語法 select from table limit offset,rows rows offset offset 舉例 select from table limit5 返回前5行 select from table...

Mysql分頁之limit用法與limit優化

與oracle和ms sqlserver相比,mysql的分頁方法簡單的讓人想哭。語法 select from table limit offset,rows rows offset offset 舉例 select from table limit 5 返回前5行 select from tabl...

mysql 中limit的用法

select from table limit offset,rows rows offset offset 在我們使用查詢語句的時候,經常要返回前幾條或者中間某幾行資料,這個時候怎麼辦呢?不用擔心,mysql已經為我們提供了上面這樣乙個功能。limit 子句可以被用於強制 select 語句返回指...