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 子句是一个好习惯
以下语法可用于以唯一顺序获取结果:
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()来获得更准确的结果。
热门文章
优秀文章