從多個 PostgreSQL 欄位產生物件的 JSON 陣列
本指南示範如何從 PostgreSQL 表中擷取資料作為物件的 JSON 數組,並按特定列分組。 這些範例使用 MyTable
表格作為參考:
id | value_two | value_three | value_four |
---|---|---|---|
1 | a | A | AA |
2 | a | A2 | AA2 |
3 | b | A3 | AA3 |
4 | a | A4 | AA4 |
5 | b | A5 | AA5 |
目標是建立一個 JSON 數組,其中每個物件包含 value_three
和 value_four
,並按 value_two
分組。所需的輸出格式為:
value_two | value_four |
---|---|
a | [{"value_three":"A","value_four":"AA"}, {"value_three":"A2","value_four":"AA2"}, {"value_three":"A4","value_four":"AA4"}] |
b | [{"value_three":"A3","value_four":"AA3"}, {"value_three":"A5","value_four":"AA5"}] |
PostgreSQL 解決方案(特定於版本)
最佳解決方案取決於您的 PostgreSQL 版本:
PostgreSQL 10 及更高版本:
利用 -
運算子進行鍵排除可簡化查詢:
SELECT val2, jsonb_agg(to_jsonb(t.*) - '{id, val2}'::text[]) AS js_34 FROM tbl t GROUP BY val2;
這可以在聚合之前有效地刪除不必要的列(id
和 val2
)。
PostgreSQL 9.4 及更高版本:
jsonb_build_object()
提供了更受控制的方法:
SELECT val2, jsonb_agg(jsonb_build_object('val3', val3, 'val4', val4)) AS js_34 FROM tbl GROUP BY val2;
這明確指定了每個 JSON 物件的鍵值對。
PostgreSQL 9.3 及更高版本:
有許多選擇,每個選擇都需要權衡:
-
to_jsonb((val3, val4))
:這會遺失產生的 JSON 中的列名稱。 -
(val3, val4)::foo
:這透過轉換為自訂行類型 (foo
) 來保留列名稱。 需要事先建立類型CREATE TYPE foo AS (val3 text, val4 text);
。 -
子查詢方法:使用子查詢的更詳細方法,但避免型別轉換。
SELECT val2, jsonb_agg(to_jsonb((val3, val4))) AS js_34 -- Loses column names FROM tbl GROUP BY val2; -- Requires: CREATE TYPE foo AS (val3 text, val4 text); SELECT val2, jsonb_agg((val3, val4)::foo) AS js_34 -- Preserves column names FROM tbl GROUP BY val2; SELECT val2, jsonb_agg(to_jsonb((SELECT t FROM (SELECT val3, val4) t))) AS js_34 -- Subquery approach FROM tbl GROUP BY val2;
選擇最適合您的 PostgreSQL 版本和所需簡潔程度的方法。 對於版本 10 及更高版本,-
運算子提供最乾淨、最高效的解決方案。
以上是如何在 PostgreSQL 中以 JSON 物件陣列的形式傳回多列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

本文討論了使用Drop Table語句在MySQL中放下表,並強調了預防措施和風險。它強調,沒有備份,該動作是不可逆轉的,詳細介紹了恢復方法和潛在的生產環境危害。

本文討論了在PostgreSQL,MySQL和MongoDB等各個數據庫中的JSON列上創建索引,以增強查詢性能。它解釋了索引特定的JSON路徑的語法和好處,並列出了支持的數據庫系統。

文章討論了使用準備好的語句,輸入驗證和強密碼策略確保針對SQL注入和蠻力攻擊的MySQL。(159個字符)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版
好用的JavaScript開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能