LIMIT
子句来限制SELECT
语句返回的行数,并可指定返回数据前先跳过N行。
并非所有数据库系统都支持LIMIT
子句,因此,LIMIT
子句仅在某些数据库系统中可用,例如MySQL,PostgreSQL,SQLite,Sybase SQL Anywhere和HSQLDB。
1. SQL LIMIT子句简介
要检索查询返回的行的一部分,请使用LIMIT
和OFFSET
子句。 以下说明了这些子句的语法:
SELECT
column_list
FROM
table1
ORDER BY column_list
LIMIT row_count OFFSET offset;
SQL
在这个语法中,
row_count
确定将返回的行数。OFFSET
子句在开始返回行之前跳过偏移行。OFFSET
子句是可选的。 如果同时使用LIMIT
和OFFSET
子句,OFFSET
会在LIMIT
约束行数之前先跳过偏移行。
在使用LIMIT
子句时,使用ORDER BY
子句确保返回的行按指定顺序非常重要。
1. SQL LIMIT限制返回行数
+-------------+------------+-----------+
| employee_id | first_name | last_name |
+-------------+------------+-----------+
| 103 | Alexander | Lee |
| 115 | Alexander | Su |
| 114 | Avg | Su |
| 193 | Britney | Zhao |
| 104 | Bruce | Wong |
... ...
| 100 | Steven | Lee |
| 203 | Susan | Zhou |
| 106 | Valli | Chen |
| 206 | William | Wu |
+-------------+------------+-----------+
40 rows in set
employees表中有40行数据,如果要只返回前5
行,请使用LIMIT
子句,如以下语句。
SELECT
employee_id, first_name, last_name
FROM
employees
ORDER BY first_name
LIMIT 5;
执行上面查询语句,得到以下结果。
+-------------+------------+-----------+
| employee_id | first_name | last_name |
+-------------+------------+-----------+
| 115 | Alexander | Su |
| 103 | Alexander | Lee |
| 114 | Avg | Su |
| 193 | Britney | Zhao |
| 104 | Bruce | Wong |
+-------------+------------+-----------+
5 rows in set
使用LIMIT
和OFFSET
子句跳过3行并获取接下来的5行,如以下语句所示。
SELECT
employee_id, first_name, last_name
FROM
employees
ORDER BY first_name
LIMIT 5 OFFSET 3;
如果使用的是MySQL,则可以使用LIMIT OFFSET
子句的较短形式。
SELECT
employee_id, first_name, last_name
FROM
employees
ORDER BY first_name
LIMIT 3 , 5;
2. 获取具有第N个最高值的行
假设想要得到公司薪水第二高的员工。
SELECT
employee_id, first_name, last_name, salary
FROM
employees
ORDER BY salary DESC
LIMIT 1 OFFSET 1;
总结,使用 limit 字句可以限制sql查询的返回数据行数,也可以通过offeset 来先跳过N行数据。
参考:https://www.yiibai.com/sql/sql-limit.html