【问题标题】:Get row has Max value in MySQL?获取行在MySQL中具有最大值?
【发布时间】:2021-03-30 10:11:48
【问题描述】:

我想得到staff_id = AZ 的这个表(名称:test)的 MAX(step) 值。

id general_id staff_id step
1 4 A1 1
2 4 AZ 2
3 4 A2 3
4 5 A3 1
5 5 A4 2
6 5 AZ 3
SELECT MAX(step) AS STEP, staff_id
FROM test AS t 
WHERE staff_id = AZ 
GROUP BY general_id

【问题讨论】:

    标签: mysql sql subquery sql-order-by greatest-n-per-group


    【解决方案1】:

    对于一名员工,您可以使用order bylimit

    select *
    from test
    where staff_id = 'AZ'
    order by step desc limit 1
    

    如果您想同时为多个员工执行此操作,则一个选项使用相关子查询:

    select *
    from test t
    where t.step = (select max(t1.step) from test t1 where t1.staff_id = t.staff_id)
    

    这种方法的另一个特点是,如果有的话,它允许出现顶级关系。

    或者,在 MySQL 8.0 中,您可以使用窗口函数:

    select *
    from (
        select t.*,
            rank() over(partition by staff_id order by step desc) rn
        from test t
    ) t
    where rn = 1
    

    【讨论】:

    • 如果我想获取包含staff_id = AZgeneral_id 行,并且具有MAX` step` 值,我应该怎么做?我想要的结果包含 id 包括 4,5,6
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2021-07-23
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多