订购 json_agg 中的特定列

Mar*_*kel 4 postgresql postgresql-9.3 json

我想对 json_agg 函数中的行进行排序。

我发现了这个: PostgreSQL : select columns inside json_agg

这给了我一个为 json_agg 选择特定列的解决方案,但现在我想给聚合数据一个特定的顺序。“distinct”确实有效,而“order by”则无效。

json_agg(DISTINCT (colA, colB))
Run Code Online (Sandbox Code Playgroud)

这不会:

json_agg(DISTINCT (colA, colB) ORDER BY colA ASC, colB ASC)
Run Code Online (Sandbox Code Playgroud)

有没有办法对聚合数据进行排序?

dez*_*zso 7

不知道您所说的“不同的”确实有效,而“排序”无效。”,我想您会收到错误消息:

错误:在具有 DISTINCT 的聚合中,ORDER BY 表达式必须出现在参数列表中

它或多或少是不言自明的。尝试

json_agg(DISTINCT (colA, colB) ORDER BY (colA, colB))
Run Code Online (Sandbox Code Playgroud)

相反 - 您不会将单个列聚合到json_agg()一条记录中,并且应该按该列进行排序。