根据唯一记录 postgres 将一列从一个 sql 表传输到另一列

Posted

技术标签:

【中文标题】根据唯一记录 postgres 将一列从一个 sql 表传输到另一列【英文标题】:Transfer one column from one sql table to another based on unique records postgres 【发布时间】:2020-09-18 19:26:15 【问题描述】:

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

例如我的表模式:

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

second_table:
id int, fourth_column int;

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

我需要得到下表:

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

简而言之,我需要根据 id(primary key) 列合并这两个表。

我试过了:

    为 first_table 添加一个名为 Fourth_column 的空列,并对其进行更新。

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

此方法可行,但每个sql表包含大约1亿条记录,并且此解决方案需要大量时间(对我的程序来说是关键时间)。

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

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

问候, qwew

【问题讨论】:

当你需要fourth_column时,你为什么不离开桌子去加入? @MikeOrganek 我不知道该怎么做。我在 postgres 文档中找不到方法。 【参考方案1】:

我假设您已经有一个成功填充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 子句一样。

【讨论】:

以上是关于根据唯一记录 postgres 将一列从一个 sql 表传输到另一列的主要内容,如果未能解决你的问题,请参考以下文章

需要根据表中的唯一值将一列分解为多列?

R中根据特定字符将一列拆分为几列的方法

Postgres 和 Laravel 如何将列从字符串类型更改为整数?

根据另一列从 Pandas 系列中的列表中选择元素

Pandas 基于连接将列从一个数据帧添加到另一个数据帧

使用窗口函数根据另一列从列中检索值