我的PostgreSQL数据库中有两个表。
一个名为“ Archive”的表具有“ name”列,该列是两个单词的名字和姓氏,例如“约翰·史密斯(John Smith)”和一个要填充“ user_id”的空白列。
第二个表称为“用户帐户”,具有三列,一列为“ first_name”,一列为“ last_name”,一列为“ id”。
我的目标是实现一个查询,该查询使用“存档”中的列在“用户帐户”中选择相应的first_name和last_name,然后将“ id”返回到“ user_id”列中
答案 0 :(得分:3)
您可以使用join
。例如:
select a.*, ua.id as user_id
from archive a left join
user_accounts ua
on a.name = ua.first_name || ' ' || ua.last_name;
如果您实际上要更新列:
update archive a
set user_id = ua.id
from user_accounts ua
where a.name = ua.first_name || ' ' || ua.last_name;
请注意,名称匹配可能非常棘手。您可能不会获得预期的匹配数。如果这确实是一个问题,请问另一个问题。在问题中包括样本数据和所需结果。