mysql中l(wèi)imit用法詳解及注意事項(xiàng)總結(jié)
mysql 中的 limit 用來限制 select 查詢返回的行數(shù),程序中常被用作分頁查詢。
一、limit 用法及示例
(一)基礎(chǔ)用法及示例
語法:select * from 表名 limit [offset,] count
參數(shù)說明:
offset:偏移量,即指跳過多少行,可省略,默認(rèn)為 0,表示跳過 0 行;范圍為 [0,+∞)。
count:跳過 offset 行后,取 count 行數(shù)據(jù),范圍為 [0,+∞)。
特別注意:limit 中的 offset 和 count 必須大于等于 0;且不能為表達(dá)式,只能為明確的數(shù)字。
實(shí)例1:獲取前3行記錄
命令:select * from per_data limit 0,3;

實(shí)例2:獲取第1行緊接著的2行記錄
命令:select * from per_data limit 1,2;

(二)獲取值最大的一條記錄
實(shí)例:獲取 id_num 值最大的一條記錄。
思路:先按照 id_num 降序排序,然后取第一條記錄。
命令:select * from per_data order by id_num desc limit 1;

(三)獲取第 n 行到第 m 行數(shù)據(jù)
語法:select * from 表名 limit n-1,m-n+1; # offset 與 count 都是從0開始且為左閉右開。
實(shí)例:獲取 per_data 表的第 3 到第 5 行的數(shù)據(jù)
命令:select * from per_data limit 2,3;

(四)實(shí)現(xiàn)分頁查詢
page:表示第幾頁,從1開始,范圍 [1,+∞)
pageSize:每頁顯示多少條記錄,范圍 [1,+∞)
語法:select * from 表名 limit (page-1)*pageSize,pageSize;
原理與獲取第 n 行到第 m 行數(shù)據(jù)相同
需要注意的是,在分頁排序時(shí),最好根據(jù)主鍵來排除二義性,在二義性情況下會(huì)導(dǎo)致分頁結(jié)果混亂。
注:這里的二義性可理解為,按價(jià)格給商品排序,當(dāng)遇到價(jià)格相同時(shí),該怎么排序?價(jià)格相同又沒指定其他條件,mysql 就亂排了。
二、limit X, -1 已不可使用
limit X, -1 早已不可使用,本身也是一個(gè)錯(cuò)誤
(一)錯(cuò)誤情況
需求:使用 mysql 時(shí),需要獲取第 X 條數(shù)據(jù)之后的所有數(shù)據(jù)。
這時(shí),首先想到的就是利用 limit 來實(shí)現(xiàn)。
早期的部分文章或者資料中,提到可以使用:limit X,-1
例如,獲取第一條后的所有數(shù)據(jù),則可寫成如下 sql 語句:
select * from per_data limit 1,-1;
執(zhí)行該 sql 語句后,會(huì)發(fā)現(xiàn)報(bào)錯(cuò)如下:

錯(cuò)誤提示原文:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1' at line 1
(二)錯(cuò)誤原因及解決辦法
錯(cuò)誤原因:據(jù)官方解釋,limit X, -1 這種形式被認(rèn)為是一個(gè)優(yōu)先級(jí)較低的 bug ,已經(jīng)被修復(fù),修復(fù)后的 limit ,將不再接收負(fù)數(shù),兩個(gè)參數(shù)都必須大于或等于 0 。

上圖原文鏈接:https://bugs.mysql.com/bug.php?id=2037
(三)解決辦法
任意填寫一個(gè)滿足需求的足夠大的正數(shù)即可。
比如,示例表 per_data 中一共有 6 條數(shù)據(jù),要求是獲取第一條后的所有數(shù)據(jù)。
語法:【limit 1,count】 ,其中 count 可以是 [5,+∞)中的任意一個(gè)數(shù)。
完整語句如下:
select * from per_data limit 1,5;#這里的5可替換成任意一個(gè)大于5的數(shù)字

以上就是 mysql 中 limit 的用法及相關(guān)注意事項(xiàng),可供參考。
總結(jié)
到此這篇關(guān)于mysql中l(wèi)imit用法詳解及注意事項(xiàng)的文章就介紹到這了,更多相關(guān)mysql limit用法詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MYSQL數(shù)據(jù)表損壞的原因分析和修復(fù)方法小結(jié)(推薦)
MYSQL數(shù)據(jù)表損壞的原因分析和修復(fù)方法小結(jié),碰到的朋友可以參考,下面整理一些比較全,希望對(duì)大家有所幫助。2011-01-01
mysql存儲(chǔ)過程之錯(cuò)誤處理實(shí)例詳解
這篇文章主要介紹了mysql存儲(chǔ)過程之錯(cuò)誤處理,結(jié)合實(shí)例形式詳細(xì)分析了mysql存儲(chǔ)過程錯(cuò)誤處理相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-12-12
CentOS6.7 mysql5.6.33修改數(shù)據(jù)文件位置的方法
mysql存放的數(shù)據(jù)文件,分區(qū)容量較小,目前已經(jīng)滿,導(dǎo)致mysql連接不上,怎么解決呢?下面小編給大家分享CentOS6.7 mysql5.6.33修改數(shù)據(jù)文件位置的方法,一起看看吧2017-06-06
云服務(wù)器安裝mysql的實(shí)現(xiàn)步驟
在當(dāng)前的互聯(lián)網(wǎng)時(shí)代,云計(jì)算已經(jīng)成為重要的平臺(tái)支撐,本文就來介紹一下云服務(wù)器安裝mysql的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01

