如何 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
这是针对 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