注意:我使用的是最新版本的 Postgres (9.4)
我正在尝试编写一个查询,它对 2 个表进行简单的连接,并按第一个表的主键进行分组,并对第二个表中的几个字段进行 array_agg,我希望将其作为对象返回。该数组需要通过 json 对象中的 2 个字段的组合进行排序,并且也是唯一的。
到目前为止,我想出了以下几点:
SELECT
zoo.id,
ARRAY_AGG(
DISTINCT ROW_TO_JSON((
SELECT x
FROM (
SELECT animals.type, animals.name
) x
))::JSONB
-- ORDER BY animals.type, animals.name
)
FROM zoo
JOIN animals ON animals.zooId = zoo.id
GROUP BY zoo.id;
这导致每个动物园有一行,有一个 jsonb 对象的聚合数组,每个动物一个,唯一。
但是,我似乎无法弄清楚如何通过代码注释部分中的参数对其进行排序。
如果我取出不同的,我可以按原始字段排序,效果很好,但是我有重复项。