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

mysql分组后排序然后取每组第一个

作者:巅峰战犯   发布日期:2026-02-18   浏览:69

-- 示例数据表:sales
-- +----+--------+---------+------------+
-- | id | region | salesperson | amount |
-- +----+--------+---------+------------+
-- | 1  | North  | Alice    | 1000       |
-- | 2  | North  | Bob      | 1500       |
-- | 3  | South  | Charlie  | 800        |
-- | 4  | South  | Diana    | 1200       |
-- | 5  | East   | Evan     | 900        |
-- | 6  | East   | Frank    | 700        |
-- +----+--------+---------+------------+

-- 目标:按region分组,按amount降序排序,取每组第一个记录

SELECT *
FROM (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY region ORDER BY amount DESC) AS rn
    FROM sales
) t
WHERE rn = 1;

-- 解释:
-- 1. 使用窗口函数 ROW_NUMBER() 对每个 region 分组,并按 amount 降序排序。
-- 2. ROW_NUMBER() 为每一行分配一个唯一的行号,从 1 开始,按排序顺序递增。
-- 3. 外部查询中,只选择行号为 1 的记录,即每组中 amount 最大的记录。

上一篇:mysql变量

下一篇:mysql替换函数

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

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

Laravel 中文站