【问题标题】:Json_agg as single objectJson_agg 作为单个对象
【发布时间】:2022-01-14 04:22:31
【问题描述】:

我有下表:

create table tickets (id integer, key text, value text);

insert into tickets values
(1, 'CUSTOMER_ID', 3242),
(1, 'AMOUNT', 49),
(1, 'MOVIE', 'TITANIC');

预期输出:

{"CUSTOMER_ID": "3242", "AMOUNT": "49", "MOVIE": "TITANIC"}

如果表中的数据将存储在单独的列中,那么简单的 json_build_object('name', column_name) 就可以了,但是在这里我有不同数量的行(并且每个 ID 的行数可能不同)

所以这个不能如我所愿

select json_agg(jsonb_build_object(key, value)) from tickets where id = 1;

https://dbfiddle.uk/?rdbms=postgres_12&fiddle=a2140d9d9ecf7adcec13cbb1d86215c8

【问题讨论】:

  • 使用json_object_agg 代替json_build_object 参见manual

标签: arrays json postgresql


【解决方案1】:
select jsonb_object_agg(key, value) from tickets where id = 1;

【讨论】:

  • 谢谢,其实应该完全没有json_build_object
  • 同意你的看法!
【解决方案2】:

我想你正在寻找

SELECT id,
       jsonb_object_agg(key, value)
FROM tickets
GROUP BY id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多