PostgreSQL 提供了多种方法来查询数据并将其格式化为 JSON 对象数组,并按特定列对结果进行分组。 以下是不同 PostgreSQL 版本的方法细分。
要从聚合的 JSON 对象中删除特定键,请在聚合之前使用 -
运算符。 为了解决重载函数的歧义,需要显式转换为 text[]
:
<code class="language-sql">SELECT val2, jsonb_agg(to_jsonb(t.*) - '{id, val2}'::text[]) AS js_34 FROM tbl GROUP BY val2;</code>
利用 jsonb_build_object()
从键值对构造 JSON 对象:
<code class="language-sql">SELECT val2, jsonb_agg(jsonb_build_object('val3', val3, 'val4', val4)) AS js_34 FROM tbl GROUP BY val2;</code>
使用 to_jsonb()
与 ROW 表达式或子查询来生成对象数组:
<code class="language-sql">SELECT val2, jsonb_agg(to_jsonb((val3, val4))) AS js_34 FROM tbl GROUP BY val2;</code>
或者:
<code class="language-sql">SELECT val2, jsonb_agg(to_jsonb((SELECT t FROM (SELECT val3, val4) t))) AS js_34 FROM tbl GROUP BY val2;</code>
这些方法提供了检索和构造数据、对值进行分组以及创建表示单行中多列的对象 JSON 数组的有效方法。
以上是如何从同一行返回多个列作为 PostgreSQL 中的 JSON 对象数组?的详细内容。更多信息请关注PHP中文网其他相关文章!