如何 select postgres 中的多列数组?

How to select an array with multiple columns in postgres?

这是针对 postgres 12.8 的。假设我有一个客户 table 和一个地址 table,它们由 customer_id 键连接。

我正在尝试对 select 所有客户及其地址数组(街道、城市、州、邮政编码)进行一次查询

以结构数组结束,如下所示:

type Customer struct{
   customer_id string
   address     []Address
}

type Address struct {
   street string
   city   string
   state  string
   zip   string
}

连接不起作用,因为每一行都有一个客户 ID。

我尝试做类似

的事情

select customer_id, (select array_agg(street, city, state, zip) from address where customer_id= c.id) from customer c

但是我得到一个函数不存在的错误。

我觉得 select 将另一个 table 作为数组是很常见的,但我以前从未 运行 进入过它。我在网上也找不到很好的例子。

感谢您的帮助。

是这样的吗?

SELECT
  customer_id,
  array_agg(row(street, city, state, zip))
FROM
  customer_address
GROUP BY
  customer_id

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