如何按每组的最小值对表进行排序,但同时将一组行保持在一起。下面是我要完成的简单示例。该表按最低组值排序,但组保持在一起。我很确定已经问过这个问题,但是我找不到答案。
+---------+-------+
| 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 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
SELECT *,RN = ROW_NUMBER()从温度开始(按ID排序或按值,ID排序)