P.V*_*.V. 1 postgresql join sql-update
我有一个Postgres表predicted_data:
id | lat | lon | predicted
----+-----+-----+-----------
1 | 1 | 1 | 10
2 | 2 | 2 | 20
3 | 3 | 3 | 30
Run Code Online (Sandbox Code Playgroud)
我有另一个表observed_data:
id | lat | lon | observed | error
----+-----+-----+----------+-------
1 | 1 | 1 | 11 |
2 | 2 | 2 | 25 |
3 | 3 | 3 | 32 |
Run Code Online (Sandbox Code Playgroud)
我要填充的error列observed_data。对于第一行,我将执行以下操作:
UPDATE observed_data
SET error =
((SELECT predicted FROM predicted_data WHERE lat = 1 AND lon = 1) - (SELECT observed FROM observed_data WHERE lat = 1 AND lon = 1))
WHERE lat = 1 AND lon = 1 AND id = 1;
Run Code Online (Sandbox Code Playgroud)
有什么办法可以编写此查询,以便一次对每一行执行此查询?
我的最终结果应该是:
id | lat | lon | observed | error
----+-----+-----+----------+-------
1 | 1 | 1 | 11 | -1
2 | 2 | 2 | 25 | -5
3 | 3 | 3 | 32 | -2
Run Code Online (Sandbox Code Playgroud)
您可以对联接使用UPDATE:
update observed_data as od
set error = pd.predicted - od.observed
from predicted_data as pd
where (pd.lat, pd.long) = (od.lat, od.long);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33 次 |
| 最近记录: |