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

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

Patricia Arquette
Patricia Arquette原创
2025-01-14 22:01:49544浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn