我对PostgreSQL比较新,并试图弄清楚如何解决以下场景。让我们说我有三张桌子:
存储
| store_id |
|----------|
| 1 |
| 2 |
| 3 |
产品
| product_id |
|------------|
| 1 |
| 2 |
| 3 |
store_has_product
| store_id | product_id |
|----------|------------|
| 1 | 3 |
| 1 | 2 |
| 2 | 1 |
| 3 | 3 |
| 1 | 1 |
| 3 | 1 |
| 3 | 2 |
现在我正在尝试构建一个查询,将所有产品连接到stores表并将它们分组到一个数组中,这样我就有了这样的输出:
| store_id | products |
|----------|-----------|
| 1 | {3, 2, 1} |
| 2 | {2} |
| 3 | {3, 1, 2} |
我知道PostgreSQL可以使用Arrays,但是我不知道如何编写这样的查询,并且可能已经花了太多时间考虑解决方案。
感谢您的帮助!
答案 0 :(得分:2)
如果您使用的是版本8.4
或更高版本,则可以使用array_agg
:
SELECT store_id, array_agg(product_id::text) as products
FROM store_has_product
GROUP BY store_id