在一个表的基础上用另一个ID更新重复项

时间:2019-04-01 04:37:42

标签: postgresql

我有两个表,其中很少有公共列和一个ID列。我需要从另一个表Table2更新表1中的ID列。但是表2中存在重复性,导致表1中的重复更新。

create table x_a1 
( col1 text,
 col2 text,
 col_id integer
);
create table x_a2
( col1 text,
 col2 text,
 col_id integer
);
insert into x_a1 values('A1','B1',1);
insert into x_a1 values('A1','B1',2);
insert into x_a1 values('A1','B1',3);
insert into x_a1 values('A1','B1',4);
insert into x_a2 values('A1','B1',null);
insert into x_a2 values('A1','B1',null);
insert into x_a2 values('A1','B1',null);
insert into x_a2 values('A1','B1',null);

因此,我尝试使用此查询来更新它:-

update x_a2 a2
set col_id= a1.col_id
from x_a1 a1
where a1.col1 =a2.col1
and a1.col2 =a2.col2

但是输出结果如下:- 从x_a2中选择*

col1   col2   Col_id
----------------------
A1     B1      1
A1     B1      1
A1     B1      1
A1     B1      1

所需的输出为:-

col1   col2   Col_id
----------------------
A1     B1      1
A1     B1      2
A1     B1      3
A1     B1      4

0 个答案:

没有答案