sql - 在 Postgres 中更新另一个查询的表使用结果
问题描述
我有一个像这样的 2 表:
表1 :(时间,值,id),表 2:(时间,值,id,...)
我需要使用基于id对table2进行查询的结果来更新table1,例如查询可以是:
SELECT * from table2 where value > 2
这个查询返回超过数百行,
我需要table1
根据id
(set time=q.time, value=q.value where id=q.id
)更新这些行是否可以使用 sql 查询?
我不需要 UPSERT,因为我确定两个表中的 id 相同,只需要更新
解决方案
Postgres 支持UPDATEFROM
子句:
update table1
set time = q.time,
value = q.value
from table2 q
where table2.id = table1.id
and table2.value > 2;
推荐阅读
- python - for 列表中的动态变量名称 - Python
- r - 在 RStudio 中进行测试时会发生什么?
- api - 处理 HTTP 状态码
- react-native - 数组函数 map 和 foreach 不起作用
- vue.js - Vue:未删除 beforeunload 事件侦听器
- kubernetes - Google Cloud 上的 Kubernetes - 无需端口转发即可访问 pod 端口
- cassandra - 如何在 Cassandra 中保持绝对一致性?
- ruby-on-rails - Rails 6 不提供静态文件
- vue.js - 动态组件内的 BootstrapVue 文件输入未填充数据
- c# - 何时在 C# 中重新引发异常?