SQL中limit的用法


说明:limit子句用于限制查询结果返回的数量,常用于分页查询。

用法:【select * from tableName limit i,n 】
参数:tableName: 为数据表;
     i: 为查询结果的索引值(默认从0开始);
     n: 为查询结果返回的数量

案例:(来自于力扣的一道简单题)

表: Orders
+-----------------+----------+
| Column Name     | Type     |
+-----------------+----------+
| order_number    | int      |
| customer_number | int      |
+-----------------+----------+

Order_number是该表的主键。
此表包含关于订单ID和客户ID的信息。

编写一个SQL查询,为下了 最多订单 的客户查找 customer_number 。
测试用例生成后, 恰好有一个客户 比任何其他客户下了更多的订单。
查询结果格式如下所示。

示例 1:
输入:

Orders 表:
+--------------+-----------------+
| order_number | customer_number |
+--------------+-----------------+
| 1            | 1               |
| 2            | 2               |
| 3            | 3               |
| 4            | 3               |
+--------------+-----------------+

输出:

+-----------------+
| customer_number |
+-----------------+
| 3               |
+-----------------+

解释:
customer_number 为 ‘3’ 的顾客有两个订单,比顾客 ‘1’ 或者 ‘2’ 都要多,因为他们只有一个订单。
所以结果是该顾客的 customer_number ,也就是 3 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/customer-placing-the-largest-number-of-orders
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解答:
  首先,我们使用 GROUP BY 选择 customer_number 和相应的订单数目。

SELECT
    customer_number, COUNT(*)
FROM
    orders
GROUP BY customer_number
customer_numberCOUNT(*)
11
21
32

  将它们按照订单数目降序排序之后,第一条记录的 customer_number 就是答案。

customer_numberCOUNT(*)
32

  在 MySQL 中, LIMIT 语句可以被用来限制 SELECT 语句的返回行数。它需要传入 1 个或 2 个非负整数参数,第一个参数 offset 表示跳过前面多少行后开始取数据,第二个参数表示最多返回多少行的数据。默认 offset 为 0(不是 1)。
  LIMIT 语句也可以只使用一个参数,这个参数的含义是从结果的第一行开始返回的行数。所以 LIMIT 1 会返回第一行的记录。

SELECT
    customer_number
FROM
    orders
GROUP BY customer_number
ORDER BY COUNT(*) DESC
LIMIT 1;
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐