MySQL按A划分行,组内按B排序,然后按每个组的第一行的C对所有这些组进行排序

MySQL按A划分行,组内按B排序,然后按每个组的第一行的C对所有这些组进行排序,mysql,sql,Mysql,Sql,我需要这样做: 因此,行由列A进行分区,每个分区的内部排序由B进行。然后,这些分区被堆叠在一起,按每个分区第一行的C进行排序。我不确定这是否可行?我想您需要: order by first_value(c) over (partition by a order by b), a, b 也就是说,按b排序时,按c在每个组中的第一个值排序。然后按a排序-将给定组的所有行保持在一起。最后,在每个组中使用b。SQL中的组的意思与您在这里描述的不同。根据您提供的信息,

我需要这样做:

因此,行由列A进行分区,每个分区的内部排序由B进行。然后,这些分区被堆叠在一起,按每个分区第一行的C进行排序。我不确定这是否可行?

我想您需要:

order by first_value(c) over (partition by a order by b),
         a,
         b

也就是说,按b排序时,按c在每个组中的第一个值排序。然后按a排序-将给定组的所有行保持在一起。最后,在每个组中使用b。

SQL中的组的意思与您在这里描述的不同。根据您提供的信息,这只是按A、B排序,C主要排序应按C排序,但分组不能细分。不,不,它不应按C主要排序。请查看上表,只查看C列。所有值都混淆了。请看A列。虽然此处未按升序显示,但按A first排序会将所有具有相同值“A”的行放在一起。按C排序,但仅从每个分区的第一行中选择C,如黄色所示。我不明白您想告诉我什么。请看A、B、C从表中按A、B、C顺序选择A、B、C的输出。请解释为什么这不能满足您所述的要求。谢谢戈登,我已经纠正了我的问题,因为我现在向您了解到,这些被称为分区,而不是组: