Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql分组每组取10条

作者:缺爱╮不缺钙   发布日期:2026-04-06   浏览:42

-- 假设我们有一个名为 `orders` 的表,其中包含 `customer_id` 和 `order_date` 列。
-- 我们希望按 `customer_id` 分组,并从每组中取出最近的 10 条记录。

WITH RankedOrders AS (
    SELECT 
        customer_id, 
        order_date,
        ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date DESC) AS rn
    FROM orders
)
SELECT 
    customer_id, 
    order_date
FROM RankedOrders
WHERE rn <= 10;

解释说明:

  1. 窗口函数 ROW_NUMBER():我们使用窗口函数 ROW_NUMBER() 来为每个 customer_id 分组中的记录分配一个行号。PARTITION BY customer_id 表示按 customer_id 分组,而 ORDER BY order_date DESC 表示按 order_date 降序排列(即最近的记录排在前面)。
  2. CTE (Common Table Expression):我们使用 CTE (WITH 子句) 来创建一个临时结果集 RankedOrders,其中包含了每个分组中的记录及其对应的行号。
  3. 过滤行号:最后,我们在主查询中通过 WHERE rn <= 10 来筛选出每个分组中行号小于等于 10 的记录,即每组取前 10 条记录。

如果你需要对其他表或列进行类似的操作,只需替换表名和列名即可。

上一篇:mysql print

下一篇:mysql建表语句带注释

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站