在mysql中,limit關鍵字主要用于指定查詢結果從哪條記錄開始顯示,一共顯示多少條記錄;它有3種使用語法“LIMIT 初始位置,記錄數”、“LIMIT 記錄數”和“LIMIT 記錄數 OFFSET 初始位置”。
本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
當數據表中有上萬條數據時,一次性查詢出表中的全部數據會降低數據返回的速度,同時給數據庫服務器造成很大的壓力。這時就可以用 LIMIT 關鍵字來限制查詢結果返回的條數。
LIMIT 是 MySQL 中的一個特殊關鍵字,用于指定查詢結果從哪條記錄開始顯示,一共顯示多少條記錄。
LIMIT 關鍵字有 3 種使用方式,即指定初始位置、不指定初始位置以及與 OFFSET 組合使用。
指定初始位置
LIMIT 關鍵字可以指定查詢結果從哪條記錄開始顯示,顯示多少條記錄。
LIMIT 指定初始位置的基本語法格式如下:
LIMIT?初始位置,記錄數
其中,“初始位置”表示從哪條記錄開始顯示;“記錄數”表示顯示記錄的條數。第一條記錄的位置是 0,第二條記錄的位置是 1。后面的記錄依次類推。
注意:LIMIT 后的兩個參數必須都是正整數。
例 1
在 tb_students_info 表中,使用 LIMIT 子句返回從第 4 條記錄開始的行數為 5 的記錄,SQL 語句和運行結果如下。
mysql>?SELECT?*?FROM?tb_students_info?LIMIT?3,5; +----+-------+---------+------+------+--------+------------+ |?id?|?name??|?dept_id?|?age??|?sex??|?height?|?login_date?| +----+-------+---------+------+------+--------+------------+ |??4?|?Jane??|???????1?|???22?|?F????|????162?|?2016-12-20?| |??5?|?Jim???|???????1?|???24?|?M????|????175?|?2016-01-15?| |??6?|?John??|???????2?|???21?|?M????|????172?|?2015-11-11?| |??7?|?Lily??|???????6?|???22?|?F????|????165?|?2016-02-26?| |??8?|?Susan?|???????4?|???23?|?F????|????170?|?2015-10-01?| +----+-------+---------+------+------+--------+------------+ 5?rows?in?set?(0.00?sec)
由結果可以看到,該語句返回的是從第 4 條記錄開始的之后的 5 條記錄。LIMIT 關鍵字后的第一個數字“3”表示從第 4 行開始(記錄的位置從 0 開始,第 4 行的位置為 3),第二個數字 5 表示返回的行數。
不指定初始位置
LIMIT 關鍵字不指定初始位置時,記錄從第一條記錄開始顯示。顯示記錄的條數由 LIMIT 關鍵字指定。
LIMIT 不指定初始位置的基本語法格式如下:
LIMIT?記錄數
其中,“記錄數”表示顯示記錄的條數。如果“記錄數”的值小于查詢結果的總數,則會從第一條記錄開始,顯示指定條數的記錄。如果“記錄數”的值大于查詢結果的總數,則會直接顯示查詢出來的所有記錄。
例 2
顯示 tb_students_info 表查詢結果的前 4 行,SQL 語句和運行結果如下。
mysql>?SELECT?*?FROM?tb_students_info?LIMIT?4; +----+-------+---------+------+------+--------+------------+ |?id?|?name??|?dept_id?|?age??|?sex??|?height?|?login_date?| +----+-------+---------+------+------+--------+------------+ |??1?|?Dany??|???????1?|???25?|?F????|????160?|?2015-09-10?| |??2?|?Green?|???????3?|???23?|?F????|????158?|?2016-10-22?| |??3?|?Henry?|???????2?|???23?|?M????|????185?|?2015-05-31?| |??4?|?Jane??|???????1?|???22?|?F????|????162?|?2016-12-20?| +----+-------+---------+------+------+--------+------------+ 4?rows?in?set?(0.00?sec)
結果中只顯示了 4 條記錄,說明“LIMIT 4”限制了顯示條數為 4。
例 3
顯示 tb_students_info 表查詢結果的前 15 行,SQL 語句和運行結果如下。
mysql>?SELECT?*?FROM?tb_students_info?LIMIT?15; +----+--------+---------+------+------+--------+------------+ |?id?|?name???|?dept_id?|?age??|?sex??|?height?|?login_date?| +----+--------+---------+------+------+--------+------------+ |??1?|?Dany???|???????1?|???25?|?F????|????160?|?2015-09-10?| |??2?|?Green??|???????3?|???23?|?F????|????158?|?2016-10-22?| |??3?|?Henry??|???????2?|???23?|?M????|????185?|?2015-05-31?| |??4?|?Jane???|???????1?|???22?|?F????|????162?|?2016-12-20?| |??5?|?Jim????|???????1?|???24?|?M????|????175?|?2016-01-15?| |??6?|?John???|???????2?|???21?|?M????|????172?|?2015-11-11?| |??7?|?Lily???|???????6?|???22?|?F????|????165?|?2016-02-26?| |??8?|?Susan??|???????4?|???23?|?F????|????170?|?2015-10-01?| |??9?|?Thomas?|???????3?|???22?|?M????|????178?|?2016-06-07?| |?10?|?Tom????|???????4?|???23?|?M????|????165?|?2016-08-05?| +----+--------+---------+------+------+--------+------------+ 10?rows?in?set?(0.26?sec)
結果中只顯示了 10 條記錄。雖然 LIMIT 關鍵字指定了顯示 15 條記錄,但是查詢結果中只有 10 條記錄。因此,數據庫系統(tǒng)就將這 10 條記錄全部顯示出來。
帶一個參數的 LIMIT 指定從查詢結果的首行開始,唯一的參數表示返回的行數,即“LIMIT n”與“LIMIT 0,n”返回結果相同。帶兩個參數的 LIMIT 可返回從任何位置開始指定行數的數據。
LIMIT和OFFSET組合使用
LIMIT 可以和 OFFSET 組合使用,語法格式如下:
LIMIT?記錄數?OFFSET?初始位置
參數和 LIMIT 語法中參數含義相同,“初始位置”指定從哪條記錄開始顯示;“記錄數”表示顯示記錄的條數。
例 4
在 tb_students_info 表中,使用 LIMIT OFFSET 返回從第 4 條記錄開始的行數為 5 的記錄,SQL 語句和運行結果如下。
mysql>?SELECT?*?FROM?tb_students_info?LIMIT?5?OFFSET?3; +----+-------+---------+------+------+--------+------------+ |?id?|?name??|?dept_id?|?age??|?sex??|?height?|?login_date?| +----+-------+---------+------+------+--------+------------+ |??4?|?Jane??|???????1?|???22?|?F????|????162?|?2016-12-20?| |??5?|?Jim???|???????1?|???24?|?M????|????175?|?2016-01-15?| |??6?|?John??|???????2?|???21?|?M????|????172?|?2015-11-11?| |??7?|?Lily??|???????6?|???22?|?F????|????165?|?2016-02-26?| |??8?|?Susan?|???????4?|???23?|?F????|????170?|?2015-10-01?| +----+-------+---------+------+------+--------+------------+ 5?rows?in?set?(0.00?sec)
由結果可以看到,該語句返回的是從第 4 條記錄開始的之后的 5 條記錄。即“LIMIT 5 OFFSET 3”意思是獲取從第 4 條記錄開始的后面的 5 條記錄,和“LIMIT 3,5”返回的結果相同。
【相關推薦:mysql視頻教程】