MySQL按记录组对行进行排序

MySQL按记录组对行进行排序,mysql,Mysql,我想按列“value”对表中的行进行排序,其中Field=“order”,按ObjectId对行进行分组: Id | ObjectId | Field | Value ------------------------------ 1 | 1 | size | big 2 | 1 | order | 2 //unsorted 3 | 2 | size | small 4 | 2 | order | 1

我想按列“value”对表中的行进行排序,其中Field=“order”,按ObjectId对行进行分组:

 Id | ObjectId | Field | Value
------------------------------
 1  |    1     | size  |  big
 2  |    1     | order |   2   //unsorted
 3  |    2     | size  | small
 4  |    2     | order |   1   //unsorted
 5  |    3     | size  | medium
 6  |    3     | order |   3   //unsorted
预期结果:

 Id | ObjectId | Field | Value
------------------------------
 3  |    2     | size  | small
 4  |    2     | order |   1   //sorted
 1  |    1     | size  |  big
 2  |    1     | order |   2   //sorted
 5  |    3     | size  | medium
 6  |    3     | order |   3   //sorted

您需要先加入“大小”字段值:

select t.*
from t join
     (select t.object_id, max(case when field = 'order' then value end) as ordering
      from t
      group by t.object_id
     ) tsum
     on t.object_id = tsum.object_id
order by tsum.ordering, t.object_id, id;
这将为具有相同
对象id的所有对象指定相同的“顺序”