MySQL Limit分页

MySQL Limit分页查询用于限制从结果集中返回的行数,而不是在 MySQL 数据库中获取整个集合。Limit 子句与 SELECT 语句一起使用,仅返回指定的行数。这个查询只接受一个或两个参数,它们的值应该是零或任何正整数。

当表包含数千行,或者您只想返回最近插入的数据时,这是必不可少的。换句话说,如果您对获取查询返回的所有行不感兴趣,请在 SELECT 语句中使用 MySQL Limit 子句。它提高了查询的性能,甚至在表包含大量数据时停止系统崩溃。

为了只从表中获取指定的行,MySQL 使用LIMIT子句,而 SQL 使用TOP子句,Oracle 使用带有SELECT语句的ROWNUM子句。

一、MySQL Limit分页

以下是在MySQL中使用 Limit 查询的语法:

SELECT column_list  
FROM table_name  
LIMIT offset, count;  

参数说明:

column_list:它是您要返回的列的名称。

table_name:它是包含您的列名的表的名称。

offset:它指定要返回的行数。行的偏移量从 0 开始,而不是 1。

count:它指定要返回的最大行数。

下图更好地进行了解释:

注意:如果您在 Limit 子句中仅指定一个参数,MySQL 会假定这是确定从结果集中返回输出的最大行数。在这种情况下,Limit 子句参数、偏移量和计数是等效的。

带有 ORDER BY 子句的 LIMIT 子句

用户需要将 Limit 子句与Order By 子句一起使用。如果不使用 Order By 子句,您将获得未指定 order的结果。在这种情况下,很难知道查询从哪些行返回结果。因此,使用Group By 子句是一个好习惯

使用 Limit 子句以特定顺序获取行。

以下语法可用于以唯一顺序获取结果:

SELECT column_list  
FROM table_name  
GROUP BY order_expression  
LIMIT offset, count;  

二、MySQL Limit分页 示例

让我们在数据库中创建一个包含以下数据的示例表,并通过各种示例了解 Limit 子句在 MySQL 中的工作原理:

employee表:

1. MySQL 限制返回最高或最低行

以下语句用于获得前五名年轻员工:

SELECT * FROM employees  
ORDER BY emp_age  
LIMIT 5;  

该语句首先使用 Group By 子句对员工年龄进行排序,然后 Limit 子句返回前五个结果。执行上述步骤后,我们将得到以下输出:

2. MySQL Limit 使用偏移量获取行的范围

有时您希望获得值范围之间的结果。例如,你有大量的行要在应用程序上显示数据,然后将其划分为页面,每个页面最多包含一个表中的 10 行。在这种情况下,您可以使用以下查询来获取一系列行:

SELECT emp_id, emp_name, income FROM employees  
ORDER BY income DESC  
LIMIT 3,7;  

此语句返回从第 3 行开始的行,最多到第 7 行。它还按从高到低的顺序对员工的收入进行排序。执行查询,您将得到以下输出:

3. MySQL 限制 WHERE 子句

MySQL Limit 也可以与WHERE 子句一起使用。它首先检查表中的指定条件并生成与条件匹配的行。

此查询选择年龄大于 30 的前五名员工。在这里,我们还使用 Order By 子句根据员工的收入按降序对员工进行排序。

SELECT emp_name, emp_age, income FROM employees  
WHERE emp_age>30  
ORDER BY income DESC  
LIMIT 5;  

成功执行上述语句后,我们会得到如下输出:

4. MySQL LIMIT 获取第n个最高或最低值

有时我们想要获取第 n 个最高或最低值的行。在这种情况下,我们可以使用以下 MySQL LIMIT 子句来获得预期的结果:

SELECT column_list  
FROM table_name  
ORDER BY expression  
LIMIT n-1, 1;  

在此语法中,LIMIT n-1, 1 子句返回从第 n 行开始的 1 行。

例如,以下查询返回收入第二高的员工信息:

SELECT emp_name, city, income FROM employees  
ORDER BY income  
LIMIT 1, 1;  

执行上述语句,它将给出以下查询:

需要注意的是,上述查询仅在您的表不包含两名有收入的员工时才有效。在这种情况下,我们将使用DENSE_RANK()来获得更准确的结果。

热门文章

优秀文章