首页 > 解决方案 > 通过计算另一个表中的数据来更新列

问题描述

我有两个表,比如说 A 和 B,并且想通过将表 B 中的 column2 与表 A column2 进行比较来计算表 B 中的结果,并在表 A column1 中更新它们。

我正在使用此处显示的脚本,但这需要很长时间,所以如果有人可以提供替代/更好和更快的选项/脚本,我将不胜感激

UPDATE tableA
SET tableA.column1 = (SELECT COUNT(*)
                      FROM tableB 
                      WHERE tableA.column2 = tableB.column2)

标签: postgresqljoincountupdates

解决方案


使用专有UPDATE ... FROM来执行可以不是嵌套循环的连接:

UPDATE tableA SET tableA.column1 = tbc.count
FROM (SELECT column2,
             count(*) AS count
      FROM tableB
      GROUP BY column2) AS tbc
WHERE tableA.column2 = tbc.column2;

推荐阅读