POSTGRESQL:连接列

POSTGRESQL: Join columns

我有一个 POSTGRESQL 版本 12.5 数据库,其中有一个 table,其中包含三列:c_idcolumnacolumnb。三列可以有不同的值。

我需要像这样将它们的值连接到一个对象中:

这是示例数据 我有一个 table,它有 3 个相同类型的列

c_id        columna   columnb
1              a       b
2              c       d
3              x       y

我需要 运行 一个将像这样连接列 columnacolumnb 的查询:

c_id       merge_column
1             {"columna":a, "columnb": "b"}
2             {"columna":d, "columnb": "d"}
3             {"columna":x, "columnb": "y"}

有什么想法吗?

提前致谢

您可以将整行转换为 JSON,删除 c_id 键:

select t.c_id, to_jsonb(t) - 'c_id' as merge_column
from the_table t

如果列数比您显示的多,而您只想得到其中的两个,使用 jsonb_build_object() 可能更容易:

select t.c_id, 
       jsonb_build_object('columna', t.columna, 'columnb', t.columnb) as merge_column
from the_table t