SQL使用另一个表中的列的算术函数更新新表中的列

时间:2017-11-18 06:35:15

标签: sql postgresql join sql-update

我有两张桌子:

表1的一部分:

 id  |  per  |  va   | gp | minutes 
-----+-------+-------+----+---------
   1 | 11.87 |  14.5 | 69 |    16.1
   2 | 17.07 | 154.9 | 78 |    23.9
   3 |  4.30 |  -8.6 | 21 |     4.4
   4 |  5.68 | -42.2 | 52 |     9.3
   5 | 19.46 | 347.8 | 82 |    32.1
   6 | 18.26 | 125.3 | 47 |    23.3
   7 | 12.76 |  79.0 | 82 |    28.5
   8 |  9.19 |  -3.7 | 13 |    14.8
   9 | 21.15 |  10.7 | 10 |     6.8
  10 | 14.38 |  46.1 | 31 |    25.7

表2:

 player |           prl           | position 
--------+-------------------------+----------
 1      |                         | 
 2      |                         | 
 3      |                         | 
 4      |                         | 

我试图通过获取表1中的那些列并按照 - ((67 * va)/(gp *分钟))来计算prl。我当然可以在将其插入prl列之外进行计算,但无法找到将其转换为prl的方法。我最接近的是:

update hwk2
set prl = per - ((67*va)/(gp*minutes)) from more_player_stats;
UPDATE 1904

在整个prl列中给出了相同的结果。任何人都可以帮助这个全新的SQL用户吗?

1 个答案:

答案 0 :(得分:1)

使用更新联接:

UPDATE hwk2 AS t1
SET prl = t1.per - ((67*t1.va) / (t1.gp*t1.minutes))
FROM more_player_stats AS t2
WHERE t1.player = t2.id;

这是关于Postgres更新的SO link to a reference question