首頁 >資料庫 >mysql教程 >如何從同一行傳回多個欄位作為 PostgreSQL 中的 JSON 物件陣列?

如何從同一行傳回多個欄位作為 PostgreSQL 中的 JSON 物件陣列?

Patricia Arquette
Patricia Arquette原創
2025-01-14 22:01:49543瀏覽

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