gpt4 book ai didi

PostgreSQL:聚合成数组并加入

转载 作者:行者123 更新时间:2023-11-29 12:09:20 28 4
gpt4 key购买 nike

pgsql 有点新,我想我正在寻找的是一些常见的需求,但我仍然找不到解决方案。

我有 3 个表:
用户

user_id|username|password
-------|--------|--------
1 | guest | blabla
2 | admin | blabla

角色

role_id|name | descr
-------|-----|--------
1 |role1|role one
2 |role2|role two

用户角色

user_id|role_id
-------|-------
2 | 1
2 | 2

我想显示一个用户表及其所有角色,我猜(请随时纠正我),方法是:

  1. 将用户角色分组到数组中:
    从 user_roles 组中选择 user_id,array_agg(role_id) by user_id where user_id = 2;
  2. 以某种方式将 array_agg(role_id) 的数组加入到 roles 中以选择角色名称。

如您所见,我对如何执行 #2 有点困惑。这是做我想做的最好的方法吗?我构建数据库表的方式有问题吗?

谢谢!

最佳答案

要实现您的查询,您首先要在表之间进行连接,最后在 name 列上进行聚合。请注意,它可能更漂亮 using string_agg(r.name,',')

select ur.user_id,array_agg(r.name) 
from user_roles ur,
roles r
where ur.role_id = r.role_id
and ur.user_id = 2
group by ur.user_id;

关于PostgreSQL:聚合成数组并加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45042709/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com