相关疑难解决方法(0)

79
推荐指数
5
解决办法
9万
查看次数

返回array_agg()中的第一个元素

我正在写一个查询,以获得所有球队的所有球员.我没有在应用程序中循环,而是决定使用单个查询来获取所有团队的玩家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)

sql postgresql

7
推荐指数
2
解决办法
8612
查看次数

在 Postgres 中插入记录时如何合并现有的 jsonb 字段?

假设我在 Postgres 上有一个表,其中 jsonb 列包含{"a": 1, "b": 2}. 现在我想插入一个具有相同 id 和{"b": 10, "c": 20}jsonb 列值的记录。

因此,我希望行的 jsonb 字段包含{"a": 1, "b": 10, "c": 20}. 如何做到这一点?

postgresql jsonb

5
推荐指数
2
解决办法
3375
查看次数

标签 统计

postgresql ×3

jsonb ×1

postgresql-9.1 ×1

sql ×1