我有這個 sql
select post_id, tag
from finalcache
order by tag, post_rank desc
它給出了這個結果。

我如何讓結果看起來像這樣?
{
"Politics": ["1e4fd2c5-c32e-4e3f-91b3-45478bcf0185"],
"Technology": [
"1e4fd2c5-c32e-4e3f-91b3-45478bcf0185",
"1e4fd2c5-c32e-4e3f-91b3-45478bcf0189",
"1e4fd2c5-c32e-4e3f-91b3-45478bcf0186",
]
}
我一直在嘗試不同的組合,json_build_object并且json_agg這樣的
select json_build_object(tag, json_agg(post_id))
from finalcache
group by tag, post_rank
order by tag, post_rank desc
但我只是沒有得到正確的回應。任何幫助將不勝感激。
uj5u.com熱心網友回復:
這是您的方法:
select json_agg(jposts) from (
select json_build_object(tag , ARRAY_AGG(post_id)) jposts
from mytable
group by tag
) t
db<>在這里擺弄
首先為每一行準備 json 然后用于json_agg聚合所有 json 行
uj5u.com熱心網友回復:
嘗試這個 :
WITH list AS
(
SELECT jsonb_agg(post_id) FILTER (WHERE tag = 'Politics') OVER () AS pol
, jsonb_agg(post_id) FILTER (WHERE tag = 'Technology') OVER () AS tech
FROM finalcache
ORDER BY post_rank desc
)
SELECT jsonb_build_object('Politics', l.pol, 'Technology', tech)
FROM list AS l
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/366788.html
標籤:sql PostgreSQL的
