根据唯一记录postgres将一列从一个sql表转移到另一列

问题描述

我有两个sql(postgres)表,我需要从一个表到另一表插入一列。 注意每个表包含大约1亿条记录

例如,我的表架构:

first_table:
id int,first_column int,second_column int,third_column;

second_table:
id int,fourth_column int;

两个表中的Note id列都是主键。

我需要获取下表:

first_table:
id int,third_column int,fourth_column int;

几句话,我需要基于id(主键)列合并这两个表。

我尝试过:

  1. 在first_table中添加一个名为four_column的空列,并对其进行更新。

    UPDATE first_column AS f
           SET fourth_column = t.fourth_column
           FROM second_table AS t
           WHERE f.id = t.id;

方法有效,但是每个sql表包含大约1亿条记录,并且此解决方案要花费很多时间(对我的程序来说很关键)。

  1. 使用某些类型的postgres连接,但是文档中的示例令我失望。

是否存在一些可以在短时间内进行此更新/传输的方法或规则。也许我应该使用一些高级的大数据库,例如Sparksql或其他。

关于, qwew

解决方法

我假设您已经有一个可以成功填充first_tablesecond_table的系统。

如果是这种情况,则在需要将数据放在一起时将两个表连接起来:

select f.id,f.first_column,f.second_column,f.third_column,s.fourth_column
  from first_table f
  join second_table s
    on s.id = f.id
 where f.first_column = 200
   and s.fourth_column = 110

如果表中有1亿条记录,那么我假设您正在使用一些条件来限制返回的行,例如我的示例中的where子句。