在jsonb数据的嵌套级别按json元素排序- postgresql

anauzrmj  于 2022-12-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(125)

我在postgresql中有下面的表,它将JSON数据存储在jsonb类型的列中。

CREATE TABLE "Trial" (
  id SERIAL PRIMARY KEY,
  data jsonb
);

下面是示例json结构

{
"id": "000000007001593061",
"core": {
    "groupCode": "DVL",
    "productType": "ZDPS",
    "productGroup": "005001000"
},
"plants": [
    {
        "core": {
            "mrpGroup": "ZMTS",
            "mrpTypeDesc": "MRP",
            "supLeadTime": 777
        },
        "storageLocation": [
            {
                "core": {
                    "storageLocation": "H050"
                }
            },
            {
                "core": {
                    "storageLocation": "H990"
                }
            },
            {
                "core": {
                    "storageLocation": "HM35"
                }
            }
        ]
    }
],
"discriminator": "Material"

}
这些是用于插入json数据的脚本

INSERT INTO "Trial"(data)
VALUES(CAST('{"id":"000000007001593061","core":{"groupCode":"DVL","productType":"ZDPS","productGroup":"005001000"},"plants":[{"core":{"mrpGroup":"ZMTS","mrpTypeDesc":"MRP","supLeadTime":777},"storageLocation":[{"core":{"storageLocation":"H050"}},{"core":{"storageLocation":"H990"}},{"core":{"storageLocation":"HM35"}}]}],"discriminator":"Material"}' AS JSON))

INSERT INTO "Trial"(data)
VALUES(CAST('{"id":"000000000104107816","core":{"groupCode":"ELC","productType":"ZDPS","productGroup":"005001000"},"plants":[{"core":{"mrpGroup":"ZCOM","mrpTypeDesc":"MRP","supLeadTime":28},"storageLocation":[{"core":{"storageLocation":"H050"}},{"core":{"storageLocation":"H990"}}]}],"discriminator":"Material"}' AS JSON))

INSERT INTO "Trial"(data)
VALUES(CAST('{"id":"000000000104107818","core":{"groupCode":"DVK","productType":"ZDPS","productGroup":"005001000"},"plants":[{"core":{"mrpGroup":"ZMTL","mrpTypeDesc":"MRP","supLeadTime":28},"storageLocation":[{"core":{"storageLocation":"H050"}},{"core":{"storageLocation":"H990"}}]}]}' AS JSON))


如果尝试在第一级排序,那么它的工作

select id,data->'core'->'groupCode' 
from "Trial" 
order by data->'core'->'groupCode' desc

但是当我尝试在嵌套级别排序时,下面是脚本,然后它不为我工作,我确信我对这个脚本是错误的,但不知道它是什么?如果有人知道如何在嵌套级别排序JSONB数据,需要助手。

select id,data->'plants' 
from sap."Trial" 
order by data->'plants'->'core'->'mrpGroup' desc

需要帮助为JSONB数据编写嵌套级别的order by查询。

zrfyljdw

zrfyljdw1#

以下查询对我有效
SELECT id, data FROM "Trial" ORDER BY jsonb_path_query_array(data, '$.plants[*].core[*].mrpGroup') desc limit 100

相关问题