📜  MySQL限制

📅  最后修改于: 2020-11-19 00:56:50             🧑  作者: Mango

MySQL限制

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

在这种情况下,表包含数千行,或者您只想返回最近插入的数据,这是至关重要的。换句话说,如果您对获取查询返回的所有行都不感兴趣,则将MySQL Limit子句与SELECT语句一起使用。当表包含大量数据时,它可以提高查询的性能,甚至可以使系统崩溃。

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

句法

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

SELECT column_list
FROM table_name
LIMIT offset, count;

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

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

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

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

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

下面的视觉表示可以更清楚地说明这一点:


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

LIMIT条款和ORDER BY条款

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

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

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

MySQL限制示例

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

表:员工

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.带WHERE子句的MySQL限制

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()获得更准确的结果。