Postgresql Postgres JSON_AGG和订单不一起工作

Postgresql Postgres JSON_AGG和订单不一起工作,postgresql,Postgresql,我有一个如下的查询: SELECT *, (SELECT json_agg(deals.*) FROM deals WHERE vendors.id = deals.vendorid) as deals FROM vendors SELECT *, (SELECT json_agg(deals.*) FROM deals WHERE vendors.id = deals.vendorid ORDER BY priority) as deals FROM vendors 但是,当我尝试按dea

我有一个如下的查询:

SELECT *,
(SELECT json_agg(deals.*) FROM deals WHERE vendors.id = deals.vendorid) as deals
FROM vendors
SELECT *,
(SELECT json_agg(deals.*) FROM deals WHERE vendors.id = deals.vendorid ORDER BY priority) as deals
FROM vendors
但是,当我尝试按
deals
表中的字段排序时,该查询非常有效,如下所示:

SELECT *,
(SELECT json_agg(deals.*) FROM deals WHERE vendors.id = deals.vendorid) as deals
FROM vendors
SELECT *,
(SELECT json_agg(deals.*) FROM deals WHERE vendors.id = deals.vendorid ORDER BY priority) as deals
FROM vendors
我得到以下错误:

error: column "deals.priority" must appear in the GROUP BY clause or be used in an aggregate function

你知道如何进行这样的排序吗?

语法不应该是这样的吗

(SELECT json_agg(deals.*) WITHIN GROUP (ORDER BY priority)
 FROM deals
 WHERE vendors.id = deals.vendorid 
) as deals
文档是。

您可以

SELECT *,
(SELECT json_agg(deals.* ORDER BY priority) FROM deals WHERE vendors.id = deals.vendorid) as deals
FROM vendors

请参阅。

这很好,我觉得比其他选项短。我很惊讶组内的
json\u agg
一起工作…?