具有名称,名字和姓氏的PostgreSQL多表查询

时间:2018-09-16 01:40:27

标签: sql postgresql

我的PostgreSQL数据库中有两个表。

一个名为“ Archive”的表具有“ name”列,该列是两个单词的名字和姓氏,例如“约翰·史密斯(John Smith)”和一个要填充“ user_id”的空白列。

第二个表称为“用户帐户”,具有三列,一列为“ first_name”,一列为“ last_name”,一列为“ id”。

我的目标是实现一个查询,该查询使用“存档”中的列在“用户帐户”中选择相应的first_name和last_name,然后将“ id”返回到“ user_id”列中

1 个答案:

答案 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;

请注意,名称匹配可能非常棘手。您可能不会获得预期的匹配数。如果这确实是一个问题,请问另一个问题。在问题中包括样本数据和所需结果。