MySQL Limit

17 Mar 2025 | 4 分钟阅读

MySQL LIMIT 查询用于限制从结果集中返回的行数,而不是在 MySQL 数据库中获取整个数据集。LIMIT 子句与 SELECT 语句一起使用,仅返回指定数量的行。此查询最多接受两个参数,其值应为零或任何正整数。

在表包含数千行或您只想返回最近插入的数据的情况下,这一点至关重要。换句话说,如果您不关心获取查询返回的所有行,请在 SELECT 语句中使用 MySQL LIMIT 子句。它可以提高查询性能,甚至可以防止在表包含大量数据时系统崩溃。

要仅从表中获取指定行,MySQL 使用 LIMIT 子句,而 SQL 使用 TOP 子句,Oracle 使用 ROWNUM 子句以及 SELECT 语句。

语法

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

在上面的语法中,我们可以看到:

Column_list: 这是您想要返回的列的名称。

Table_name: 这是包含您列名的表的名称。

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

Count: 指定您想要返回的最大行数。

以下可视化表示更清楚地解释了这一点:

MySQL Limit

注意:如果您只为 Limit 子句指定一个参数,MySQL 会假定它用于确定要从结果集中返回输出的最大行数。在这种情况下,Limit 子句的参数 offset 和 count 是等效的。

带有 ORDER BY 子句的 LIMIT 子句

用户需要使用带有 Order By 子句的 Limit 子句。不使用 Order By 子句,您将获得无序的结果。在这种情况下,很难知道查询是从哪些行返回结果的。因此,养成使用 Group By 子句和 Limit 子句的习惯,以获得按特定顺序排列的行。

可以使用以下语法来获得唯一排序的结果:

MySQL Limit 示例

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

表:employees

MySQL Limit

1. MySQL Limit 返回最高或最低行

以下语句用于获取最年轻的五名员工:

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

MySQL Limit

2. MySQL Limit 使用 offset 获取行范围

有时您想获取值范围内的结果。例如,您有大量行要在应用程序中显示数据,然后将其分成页面,每个页面最多包含表中的 10 行。在这种情况下,您可以使用以下查询来获取行范围:

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

MySQL Limit

3. MySQL Limit 与 WHERE 子句

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

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

成功执行上述语句后,我们将获得以下输出:

MySQL Limit

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

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

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

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

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

MySQL Limit

请注意,当您的表中没有两个人收入相同时,上述查询才有效。在这种情况下,我们将使用 DENSE_RANK() 来获得更准确的结果。


下一个主题MySQL 存储函数