postgresql - 带有 COUNT 的 HQL 更新列
问题描述
我正在使用 Hibernate,因此 HQL,链接到 PostgreSQL 数据库。
我有一个表users
和一个表teams
,它们与表中的ManyToMany
条件相关联teams_users
。
我想更新或选择表格team
,以便该属性usersCount
获取属于团队的用户数量。
我不想在@Formula
我的实体类中添加一个,因为我不希望它一直被执行,这JOIN FETCH
对我不需要计数的大查询来说太浪费了。
换句话说,我想找到以下 PSQL 查询的 HQL 等价物
UPDATE teams t
SET users_count = (SELECT COUNT(ut.*)
FROM teams t1
LEFT JOIN teams_users tu
ON t1.id = tu.team_id
WHERE t1.id = t.id
GROUP BY t1.id);
或者
等价于以下
SELECT t.*, count(tu.*) AS users_count
FROM teams t
LEFT JOIN teams_users tu
ON t.id = tu.team_id
GROUP BY t.id;
不成功的尝试(得到一个想法)
UPDATE Team t SET
t.usersCount = COUNT(t.users)
UPDATE Team t SET
t.usersCount = (SELECT COUNT(t1.users) FROM Team t1 WHERE t1.id = t.id)
SELECT t, count(t.users) AS t.usersCount
FROM Team t
解决方案
我找到了UPDATE查询的解决方案。
简直是
UPDATE Team t
SET t.usersCount = (SELECT COUNT(u) from t.users u)
它在桌子上进行了额外的连接,users
而桌子teams_users
就足够了,但是很好……它可以工作。
如果有人有SELECT的解决方案,我仍然很好奇!
推荐阅读
- javascript - 输入解析提取响应的意外结束
- flutter - 使用颤振文档在每个视图图块上创建带有心形图标的随机单词列表视图。(请在下面找到问题)
- bash - 将日期格式化为 Bash 中的特定时间间隔
- c# - 有没有办法抽象一个作为参数发送到类中的字段的函数?
- ios - 使用自动单元格高度隐藏 UITableView 的单元格子视图的正确方法是什么
- airflow - 气流 - 一次性跳过所有下游任务
- node.js - 当我运行这个脚本时,谁能指导我发生了什么?我错过了什么,我该如何解决?
- python - 如何使用 python 将更大的文件(60mb+)上传到 blob 存储?
- r - 基于回归结果绘制交互
- spring-boot - 如何将参数从执行上下文传递到 MultiResourcePartitioner