新聞中心
當(dāng)數(shù)據(jù)表中有上萬條數(shù)據(jù)時,一次性查詢出表中的全部數(shù)據(jù)會降低數(shù)據(jù)返回的速度,同時給數(shù)據(jù)庫服務(wù)器造成很大的壓力。這時就可以用
LIMIT 關(guān)鍵字來限制查詢結(jié)果返回的條數(shù)。

LIMIT 是 MySQL 中的一個特殊關(guān)鍵字,用于指定查詢結(jié)果從哪條記錄開始顯示,一共顯示多少條記錄。
LIMIT 關(guān)鍵字有 3 種使用方式,即指定初始位置、不指定初始位置以及與 OFFSET 組合使用。
指定初始位置
LIMIT 關(guān)鍵字可以指定查詢結(jié)果從哪條記錄開始顯示,顯示多少條記錄。
LIMIT 指定初始位置的基本語法格式如下:
LIMIT 初始位置,記錄數(shù)
其中,“初始位置”表示從哪條記錄開始顯示;“記錄數(shù)”表示顯示記錄的條數(shù)。第一條記錄的位置是 0,第二條記錄的位置是 1。后面的記錄依次類推。
注意:
LIMIT 后的兩個參數(shù)必須都是正整數(shù)。
例 1
在 tb_students_info 表中,使用 LIMIT 子句返回從第 4 條記錄開始的行數(shù)為 5 的記錄,SQL 語句和運(yùn)行結(jié)果如下。
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)
由結(jié)果可以看到,該語句返回的是從第 4 條記錄開始的之后的 5 條記錄。LIMIT 關(guān)鍵字后的第一個數(shù)字“3”表示從第 4 行開始(記錄的位置從 0 開始,第 4 行的位置為 3),第二個數(shù)字 5 表示返回的行數(shù)。
不指定初始位置
LIMIT 關(guān)鍵字不指定初始位置時,記錄從第一條記錄開始顯示。顯示記錄的條數(shù)由 LIMIT 關(guān)鍵字指定。
LIMIT 不指定初始位置的基本語法格式如下:
LIMIT 記錄數(shù)
其中,“記錄數(shù)”表示顯示記錄的條數(shù)。如果“記錄數(shù)”的值小于查詢結(jié)果的總數(shù),則會從第一條記錄開始,顯示指定條數(shù)的記錄。如果“記錄數(shù)”的值大于查詢結(jié)果的總數(shù),則會直接顯示查詢出來的所有記錄。
例 2
顯示 tb_students_info 表查詢結(jié)果的前 4 行,SQL 語句和運(yùn)行結(jié)果如下。
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)
結(jié)果中只顯示了 4 條記錄,說明“LIMIT 4”限制了顯示條數(shù)為 4。
例 3
顯示 tb_students_info 表查詢結(jié)果的前 15 行,SQL 語句和運(yùn)行結(jié)果如下。
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)
結(jié)果中只顯示了 10 條記錄。雖然 LIMIT 關(guān)鍵字指定了顯示 15 條記錄,但是查詢結(jié)果中只有 10 條記錄。因此,數(shù)據(jù)庫系統(tǒng)就將這 10 條記錄全部顯示出來。
帶一個參數(shù)的 LIMIT 指定從查詢結(jié)果的首行開始,唯一的參數(shù)表示返回的行數(shù),即“
LIMIT n”與“LIMIT 0,n”返回結(jié)果相同。帶兩個參數(shù)的 LIMIT 可返回從任何位置開始指定行數(shù)的數(shù)據(jù)。
LIMIT和OFFSET組合使用
LIMIT 可以和 OFFSET 組合使用,語法格式如下:
LIMIT 記錄數(shù) OFFSET 初始位置
參數(shù)和 LIMIT 語法中參數(shù)含義相同,“初始位置”指定從哪條記錄開始顯示;“記錄數(shù)”表示顯示記錄的條數(shù)。
例 4
在 tb_students_info 表中,使用 LIMIT OFFSET 返回從第 4 條記錄開始的行數(shù)為 5 的記錄,SQL 語句和運(yùn)行結(jié)果如下。
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)
由結(jié)果可以看到,該語句返回的是從第 4 條記錄開始的之后的 5 條記錄。即“LIMIT 5 OFFSET 3”意思是獲取從第 4 條記錄開始的后面的 5 條記錄,和“LIMIT 3,5”返回的結(jié)果相同。
文章標(biāo)題:創(chuàng)新互聯(lián)數(shù)據(jù)庫教程:MySQLLIMIT:限制查詢結(jié)果的條數(shù)
網(wǎng)站地址:http://www.dlmjj.cn/article/dheisce.html


咨詢
建站咨詢
