我有一个看起来像这样的查询:
SELECT *,
(SELECT json_agg(deals.*) FROM deals WHERE vendors.id = deals.vendorid) as deals
FROM vendors
Run Code Online (Sandbox Code Playgroud)
该查询效果很好,但是当我尝试按deals表中的字段进行排序时,如下所示:
SELECT *,
(SELECT json_agg(deals.*) FROM deals WHERE vendors.id = deals.vendorid ORDER BY priority) as deals
FROM vendors
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
error: column "deals.priority" must appear in the GROUP BY clause or be used in an aggregate function
Run Code Online (Sandbox Code Playgroud)
任何想法如何做这样的排序?
Ry-*_*Ry- 15
你可以
SELECT *,
(SELECT json_agg(deals.* ORDER BY priority) FROM deals WHERE vendors.id = deals.vendorid) as deals
FROM vendors
Run Code Online (Sandbox Code Playgroud)
请参阅带有array_agg和 的示例string_agg。
语法不应该是这样吗?
(SELECT json_agg(deals.*) WITHIN GROUP (ORDER BY priority)
FROM deals
WHERE vendors.id = deals.vendorid
) as deals
Run Code Online (Sandbox Code Playgroud)
文档在这里。
| 归档时间: |
|
| 查看次数: |
7431 次 |
| 最近记录: |