我想从其他来源更新我的文档表中的记录。
文档
Name , Account Number, Date of birth
S MHLONGO , 00000 ,16/12/1986
O CHUMU , 00000 ,12/12/1986
V MBONANE , 00000 ,09/12/1986
客户端
Name, Account Number, Date of birth
S MHLONGO , 33178 ,16/12/1986
S MHLONGO , 33682 ,16/12/1986
O CHUMU , 32892 ,16/12/1986
V MBONANE , 52162 ,16/12/1986
如您所见,我没有要在Documents
中链接的帐号,但我可以使用的是姓名和出生日期。但是,可能有两个或更多的S MHLONGO在同一天出生。所以我需要运行一个更新语句,它将在client
中搜索名称和出生日期,如果它只有1个条目(在客户端中只有1个条目)与Documents
列{{{ 1}}在Name and date of birth
Documents
文档
Example
我知道它有点冒险,我只是想知道它是否可以完成以及脚本会是什么样子?
我有所有数据库的备份: - )
答案 0 :(得分:1)
以下是在group by
子句中使用join
和update
的方法:
update d
set account_number = c.account_number
from documents d join
(select name, date_of_birth, count(*) as cnt,
min(account_number) as account_number
from client
group by name, date_of_birth
having count(*) = 1
) c
on c.name = d.name and c.date_of_birth = d.date_of_birth;
请注意min(account_number)
的使用。这很好,因为如果只有一个帐号,则min()
(或max()
)会返回该帐号。