1

我有多个列要聚合到一个新列中。我想将它们连接到一个数组中,并在它们之间用“,”分隔符。你能告诉我一些编写查询的进步吗。我的例子我希望工作简单快捷:

  SELECT array_agg('[' || us.name || ',' || us.age || ',' || us.gender || ']') 
  FROM users as us;
4

1 回答 1

2

如果要创建 JSON 数组,请使用 JSON 函数:

select jsonb_agg(concat_ws(',', us.name, us.age, us.gender))
from users as us;

如果您想要真正的 JSON 对象(使用键/值对)而不是数组中的逗号分隔字符串:

select jsonb_agg(to_jsonb(u))
from (
  select name, age, gender
  from users
) u

另一种选择是创建嵌套数组:

select jsonb_agg(to_jsonb(array[name, age, gender]))
from users
于 2020-08-25T09:51:51.850 回答