postgresql - 如果相应表上存在键,则 posgresql 从联接返回聚合
问题描述
我正在尝试执行连接操作并使用 posgres 中的以下查询从另一个表中返回列的聚合。
select users.username, users.id, string_agg(keys.service, ',')
from users
join keys on keys.user_id = users.id
where users.username = 'test'
group by users.id
当表中有相应的值时,查询运行良好,但如果没有则失败,如果表中没有与表中的值对应的任何值keys
,我希望它返回一个空字符串keys
id
users
解决方案
您需要LEFT OUTER JOIN
intokeys
以返回users
没有相应行的keys
.
然后,用于coalesce()
将null
keys.service
值转换为空字符串。
select users.username, users.id,
string_agg(coalesce(keys.service, ''), ',')
from users
left join keys
on keys.user_id = users.id
where users.username = 'test'
group by users.id
推荐阅读
- java - 正则表达式仅删除特殊字符而不删除其他语言字母
- amazon-web-services - io.Pipe 与 WriteAtBuffer
- xml - 使用 Groovy 在 xml 文件中断言值
- python - 是否可以使用 Jupyter 笔记本创建 Rest API?,如果是如何为以下 json 格式的代码创建 Rest API
- javascript - 将 Web 应用程序迁移到 Angular 2
- c# - 如何在 Windows Server 2012 上使用 C# 和 asp.net 创建 Excel 文件并将数据填充到其中
- php - 我的会话一直发送一个固定值,而它应该是可变的
- jquery - jQuery:按钮被按下 X 次
- laravel - 在现有的 laravel 上安装 laravel 5.6 的主题
- ruby-on-rails - pundit rspec - 未初始化的常量 UserPolicy,为什么?