postgresql - 使用从联接派生的聚合值更新所有使用别名
问题描述
SELECT activities.id, max(symbols.bought_at) AS bought_at
FROM "activities"
JOIN holdings ON trackable_id = holdings.id AND trackable_type = 'Holding'
JOIN symbols on symbols.holding_id = holdings.id
GROUP BY activities.id"
我有一个看起来像上面的 SQL。这工作正常。但是,我想将所有活动的 created_at 更新为别名 buy_at。我收到一个错误,说买了_at 不是一列。在 Postgres 中可以这样做吗?
解决方案
您可以将该查询用作 UPDATE 语句的源:
update activities
set created_at = t.bought_at
from (
SELECT activities.id, max(symbols.bought_at) AS bought_at
FROM activities
JOIN holdings ON trackable_id = holdings.id AND trackable_type = 'Holding'
JOIN symbols on symbols.holding_id = holdings.id
GROUP BY activities.id
) t
where activities.id = t.id;
这假定这activities.id
是该表的主键。
推荐阅读
- dataframe - 数据框未在 Jupyter 笔记本中返回完整的连音内容
- swift - UITextView: addGestureRecognizer 并找到textView的标签
- fusionauth - FusionAuth预注册钩子
- dll - InstallShield 2016 Build 32 位 exe
- android - 使用 Firebase 在 Android 中无法使用 Google 登录
- python - python编程...根据条件逻辑测试重新编码列表中的每个元素
- c++ - 向视差遮挡贴图添加阴影
- sql - MySQL JSON_OBJECT 不保留值的顺序?
- python - Python使用循环来运行函数并附加结果数据框
- c# - C# - 无法从双精度转换为 [变量名]