[英]How Do Sort My Json Array in Postgres
我有一個排序的Json數組:
_bb =
[
{
"so": "1",
"mdl": "Testing",
"pos": "Top"
},
{
"so": "2",
"mdl": "Testing",
"pos": "Top"
},
{
"so": "1",
"mdl": "FlashSale",
"pos": "Bottom"
}
]
我正在使用此Common表表達式來分組和排列'pos'。
with j(_bb) as (values(_con))
, ord(o,v) as (values(1,'Top'),(2,'Left'),(3,'Content'),(4,'Right'),(5,'Bottom'))
, un as (select *,jsonb_array_elements(_con) i from j)
select jsonb_agg(i order by o) from un
join ord on v=i->>'pos' into _test;
我想要實現的是根據“ pos”值對訂單進行分組和安排之后。 我也想根據它們的“ so”值來排列它們。 _test
返回基於'pos'的排序值。
這是我要實現的目標:
[
{
"so": "1",
"mdl": "Testing",
"pos": "Top"
},
{
"so": "2",
"mdl": "Testing",
"pos": "Top"
},
{
"so": "1",
"mdl": "FlashSale",
"pos": "Bottom"
},
{
"so": "2",
"mdl": "FlashSale",
"pos": "Bottom"
}
]
我找到了解決方案。 我只需要通過i->>'so'
添加另一個訂單
with j(_bb) as (values([
{
"so": "1",
"mdl": "Testing",
"pos": "Top"
},
{
"so": "2",
"mdl": "Testing",
"pos": "Top"
},
{
"so": "1",
"mdl": "FlashSale",
"pos": "Bottom"
},
{
"so": "2",
"mdl": "FlashSale",
"pos": "Bottom"
}
]::jsob))
, ord(o,v) as (values(1,'Top'),(2,'Left'),(3,'Content'),(4,'Right'),(5,'Bottom'))
, un as (select *,jsonb_array_elements(_bb) i from j)
select jsonb_agg(i order by o,i->>'so') from un
join ord on v=i->>'pos';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.