【发布时间】:2017-11-02 09:15:05
【问题描述】:
我有一个简单的 JSON 数组:
_bb jsonb =
[
{
"so": "1",
"mdl": "Testing",
"pos": "Top"
},
{
"so": "1",
"mdl": "FlashSale",
"pos": "Bottom"
},
{
"so": "1",
"mdl": "Testing",
"pos": "Top"
}
]
我想要达到的目标:
[
{
"so": "1",
"mdl": "Testing",
"pos": "Top"
},
{
"so": "1",
"mdl": "Testing",
"pos": "Top"
},
{
"so": "1",
"mdl": "FlashSale",
"pos": "Bottom"
}
]
我试过了
Select _bb into _test ORDER BY _bb->>'pos' ASC ;
我实现的是所有 pos = "Top" 成为 JSON 中的第一个,所有 "Bottom" 成为最后一个。有没有办法在 Postgres 中实现这一点?
【问题讨论】:
-
我不明白
ORDER BY _bb->>'pos' ASC将如何帮助更改数组索引 - 你能分享结构吗?...也在你原来的 jsonb 中,_bb[1]等于_bb[3]- 对吗? . 所以你说你已经实现的就是你想要的——不是吗? -
stackoverflow.com/questions/4088532/custom-order-by-explanation 这应该可以解决问题。您只需将其转换为您的案例
-
@VaoTsun 是的,它的_bb [3],但我想通过将“顶部”作为优先级放在“底部”之前来更改排序顺序。我不太确定实现它的语法是什么。
-
按字母顺序,“底部”在“顶部”之前 - 这两个可能的值还是更多?..
-
@VaoTsun 可能更像“中间”...
标签: sql json postgresql jsonb