首页 > 数据库 > mysql教程 > 如何从同一行返回多个列作为 PostgreSQL 中的 JSON 对象数组?

如何从同一行返回多个列作为 PostgreSQL 中的 JSON 对象数组?

Patricia Arquette
发布: 2025-01-14 22:01:49
原创
548 人浏览过

How to Return Multiple Columns from the Same Row as a JSON Array of Objects in PostgreSQL?

在 PostgreSQL 中以 JSON 对象数组的形式返回多列

PostgreSQL 提供了多种方法来查询数据并将其格式化为 JSON 对象数组,并按特定列对结果进行分组。 以下是不同 PostgreSQL 版本的方法细分。

PostgreSQL 10 及更高版本

要从聚合的 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>
登录后复制

PostgreSQL 9.4 及更高版本

利用 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>
登录后复制

PostgreSQL 9.3 及更高版本

使用 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板