pgsql查询一对多查询返回list和子list
时间: 2024-10-01 19:06:02 浏览: 29
pgsql查询优化之模糊查询实例详解
在PostgreSQL中,当需要从数据库中查询一对多关联的数据时,通常涉及到从一个表(称为父表或多对一端)获取记录,并通过外键关联另一个表(称为子表或一对一端)。假设有一个用户表`users`和一个订单表`orders`,其中每个用户可以有多个订单。
如果你想查询某个用户的订单列表及其详情,你可以使用JOIN语句并配合分组和子查询来实现。例如:
```sql
SELECT u.id AS user_id, u.name AS user_name,
ARRAY_agg(o.id) AS order_ids,
(SELECT array_agg(order_detail.item_name)
FROM orders o JOIN order_details od ON o.id = od.order_id
WHERE o.user_id = users.id) AS order_items
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.name;
```
这里,`ARRAY_agg`函数用于将多个订单ID聚合到一个数组中,而嵌套的子查询则获取每个用户的订单详细信息,存储为一个字符串数组。
阅读全文