MySQL按记录组对行进行排序
我想按列“value”对表中的行进行排序,其中Field=“order”,按ObjectId对行进行分组: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
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的所有对象指定相同的“顺序”