MySQL LIMIT 子句用于从表中获取指定数量的记录。当表包含数千条记录并且返回大型数据集会影响性能时,这非常有用。
MySQL LIMIT 用于数据库的分页查询。
语法
在 MySQL 中使用 LIMIT 子句的语法如下:
SELECT column1, column2, ...
FROM table_name
WHERE condition(s)
LIMIT number;
示例:
考虑一个数据库,其中包含一个名为 Employee 的表,其中包含以下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
要从 Employee 表中获取前 3 条记录,查询为:
SELECT * FROM Employee LIMIT 3;
这将产生如下所示的结果如下:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
要获取员工年龄大于25的前3条记录,查询将为:
SELECT * FROM Employee
WHERE Age > 25
LIMIT 3;
这将产生如下所示的结果:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
将 OFFSET 与 LIMIT 子句一起使用
OFFSET 值最常见与 LIMIT 子句一起使用。 OFFSET值允许用户指定从哪一行开始检索数据。
语法
在MySQL中使用OFFSET关键字的语法如下:
/* 方法1 */
SELECT column1, column2, ...
FROM table_name
WHERE condition(s)
LIMIT fetch_row_count OFFSET offset_row_count;
/* 方法2 */
SELECT column1, column2, ...
FROM table_name
WHERE condition(s)
LIMIT offset_row_count, fetch_row_count;
示例:
考虑一个数据库,其中包含一个名为 Employee 的表,其中包含以下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
要从 Employee 表中获取前 2-5 条记录,查询为:
SELECT * FROM Employee LIMIT 4 OFFSET 1;
这将产生如下结果:如下所示:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
使用以下查询也可以获得相同的结果。
SELECT * FROM Employee LIMIT 1, 4;
这将产生如下所示的结果下面:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |