通过做一些数学从另一个表更新

时间:2018-09-10 17:43:45

标签: sql postgresql

Postgres 9.6.6,最新的Ubuntu LTS。

我有一个大的主表和一个小的主表,它们从外部传感器接收数据。小记录的每个记录都有大记录的记录ID。

Table_1                       Table_2
  id  temp0  temp0temp1         temp1   Tab1_Id
   1    3       0                 35        2
   2    5       0                 15        3
   3    8       0                 75        1
   4    9       0                 45        4
   5    3       0                   .some
   6    8       0
   7    2       0
   .tens of thousand...

我正在寻找一种有效的解决方案来更新大型记录的每条记录,并进行一些数学运算,例如:

Table 1 (after)
  id  temp0  temp0temp1
   1    3      78
   2    5      40
   3    8      23
   4    9      54
   5    3       0
   6    8       0
   7    2       0

类似于:

UPDATE Table_1 
SET temp0temp1 = Table_1.temp0 + (SELECT temp1 
                                  FROM Table_2 
                                  WHERE table_2.Tab1_Id = Table_1.Id)...

谢谢
佩雷斯

2 个答案:

答案 0 :(得分:1)

您可以使用update ... from

UPDATE Table_1 t1
  SET temp0temp1 = t1.temp0 + t2.temp1
  from Table_2 t2 
  WHERE t2.Tab1_Id = t1.Id

答案 1 :(得分:0)

您可以创建一个trigger。在表1的每个插入上运行一个过程,该过程将用所需的计算更新表2。