对表进行排序,但将行的组保持在一起

问题描述 投票:0回答:2

如何按每组的最小值对表进行排序,但同时将一组行保持在一起。下面是我要完成的简单示例。该表按最低组值排序,但组保持在一起。我很确定已经问过这个问题,但是我找不到答案。

+---------+-------+
|  Group  | value |
+---------+-------+
|    1    |  3.99 |
|    1    | 10.99 |
|    3    | 12.69 |
|    1    | 20.95 |
|    2    | 19.95 |
|    3    | 10.09 |
+---------+-------+

所需的输出

+---------+-------+
|  Group  | value |
+---------+-------+
|    1    |  3.99 |
|    1    | 10.99 |
|    1    | 20.95 |
|    3    | 10.69 |
|    3    | 12.09 |
|    2    | 19.95 |
+---------+-------+
mysql sql sql-order-by
2个回答
1
投票

如果您正在运行MySQL 8.0,则可以使用窗口函数进行排序:

select t.*
from mytable t
order by min(value) over(partition by grp), value

在较早的版本中,一种选择是加入聚合子查询:

select t.*
from mytable t
inner join (
    select grp, min(value) min_value from mytable group by grp
) m on m.grp = t.grp
order by m.min_value, t.value

0
投票

SELECT *,RN = ROW_NUMBER()从温度开始(按ID排序或按值,ID排序)

© www.soinside.com 2019 - 2024. All rights reserved.