我需要在postgres的一个查询中对子表中的字段进行分组。
我有以下数据
Stores:
| id | name |
|----|------|
| 1 | abcd |
Features:
| id | store | name | other |
|----|-------|------|-------|
| 1 | 1 | door | metal |
| 2 | 1 | fork | green |
我已经接受了这个查询
SELECT
stores.id,
stores.name,
concate_ws(',', features.id, features.name, features.other)
FROM stores
LEFT JOIN features
ON(features.store=stores.id)
WHERE stores.id =1
GROUP BY stores.id, features.id;
这是我迄今为止最好的,但产生2个元组
1, abcd, (1,door,metal)
1, abcd, (2,fork,green)
我希望能够获得一行功能' |'如此连接
1, abcd ,(1,door,metal|2,fork,green)
答案 0 :(得分:0)
使用string_agg()
:
SELECT stores.id,
stores.name,
string_agg(concate_ws(',', features.id, features.name, features.other), '|')
FROM stores
LEFT JOIN features ON features.store=stores.id
WHERE stores.id =1
GROUP BY stores.id, stores.name;