根据唯一记录 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_table
和second_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 表传输到另一列的主要内容,如果未能解决你的问题,请参考以下文章