psql 中的动态键 row_to_json

Dynamic key in psql row_to_json

我有一个问题:

SELECT
row_to_json(( SELECT s FROM (
    SELECT 
        id,
        addr_id,
        target,
        status
) s
)) FROM shop;

哪returns我这样的行:

{"id": 1, "addr_id": 12, "target": null, "status": "ACTIVE"}

如何重写我的查询,以便行 (addr_id) 的值成为我的 json:

的键
{12: {"id": 1, "target": null, "status": "ACTIVE"}}

使用 json_build_object 而不是 row_to_json。我认为这也使查询更具可读性。

SELECT
  json_build_object(shop.addr_id, json_build_object(
    'id', shop.id,
    'target', shop.target,
    'status', shop.status
  ))
FROM shop;

您可以使用 json_build_object.

SELECT
json_build_object(addr_id,
row_to_json(( SELECT s FROM (
    SELECT 
        id,         
        target,
        status
) s
))) FROM shop;