使用 postgresql 9.2 版,我正在尝试运行一个查询来选择某些列来构建一个 json 对象。这是我从这个问题中得出的查询:
select
a.id
, json_agg((SELECT x FROM (SELECT b.fieldA) AS x)) AS item
from a join b on a.id = b.foreign_key
limit 10
当我运行它时,我得到一个很难解析的错误。
错误:函数 json_agg(record) 不存在 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
, json_agg((SELECT x FROM (SELECT b.fieldA) AS x)) 作为项目
似乎抱怨是 json_agg 没有收到正确的输入,但我不明白为什么。
当我在没有 的情况下运行相同的查询时json_agg
,即仅使用子选择表达式时,我得到一个带有b.fieldA
内括号值的列。我不确定括号在数据类型方面表示什么,但我可以看到可能json_agg
只是获取值,因此不知道如何提供属性名称。
谁能解释我哪里出错了?
json_agg 在 postgres 版本 9.2 中不存在(现在已停产)。它是在 9.3 版中引入的。
HINT 似乎有点不合适。如果不存在该名称的函数,那么再多的转换参数都不起作用。