首先,如果您不使用9.1+,请参阅此问题.
如何安装PostgreSQL 9.1的扩展?
我正在写一个查询,以获得所有球队的所有球员.我没有在应用程序中循环,而是决定使用单个查询来获取所有团队的玩家array_agg()
.我写的查询如下:
SELECT team_id, array_agg(team_name) AS teamname,
array_agg(player_id||'##'||player_name) AS playerdetails
FROM team
INNER JOIN players ON team_id = player_team
GROUP BY team_id
Run Code Online (Sandbox Code Playgroud)
这个查询给我的结果如下,在结果集中teamname
重复(确切地说是玩家的数量)
team_id team_name playerdetails
1 {Australia,Australia,Australia,Australia} {"5##Glenn Donald McGrath","6##Shane Warne","2##Steve Waugh","1##Adam Gilchrist"}
2 {India,India,India,India} {"8##Kapil Dev","11##Saurav Ganguly","3##Rahul Dravid","9##Sachin Tendulkar"}
3 {"South Africa","South Africa","South Africa","South Africa"} {"12##Gary Kristen","4##Shaun Pollock","7##Jacques Kallis","10##Alan Donald"}
Run Code Online (Sandbox Code Playgroud)
有没有办法像这样返回结果
team_id team_name playerdetails
1 Australia {"5##Glenn Donald McGrath","6##Shane Warne","2##Steve Waugh","1##Adam Gilchrist"}
Run Code Online (Sandbox Code Playgroud)
我使用子查询实现了它,但想知道是否可以在没有子查询的情况下编写它
SELECT team_id, teamname[1], playerdetails
FROM (
SELECT team_id, array_agg(team_name) AS teamname,
array_agg(player_id||'##'||player_name) …
Run Code Online (Sandbox Code Playgroud) 假设我在 Postgres 上有一个表,其中 jsonb 列包含{"a": 1, "b": 2}
. 现在我想插入一个具有相同 id 和{"b": 10, "c": 20}
jsonb 列值的记录。
因此,我希望行的 jsonb 字段包含{"a": 1, "b": 10, "c": 20}
. 如何做到这一点?