我有2张桌子:
具有列col_A,col_B,col_C,col_D,col_E的表_1
具有列col_A,col_B,col_C,col_D,col_F的表_2
我想将它们加入到col_A,col_B,col_C,col_D列中。
对于表_1中没有以这种方式联接的行(因为它们在表_2中没有匹配项,我只想将它们联接在col_A,col_B,col_C列上。
如果表_1中仍有行未连接,我只想将它们连接到列col_A,col_B上。
完成后,表_1中仍然存在未连接的行,我只想将它们连接到列col_A上。
我编写了以下脚本,在其中我使用新表来获得此结果。有没有更有效的方法可以做到这一点?最好通过创建视图而不是表?
create table new_table (col_A nvarchar(50) , col_B nvarchar(50) , col_C nvarchar(50)
, col_D nvarchar(50) , col_E nvarchar(50) , col_F nvarchar(50) )
go
insert into new_table
select Table_1.* , Table_2.col_F
from Table_1
inner join Table_2
on Table_1.col_A=Table_2.col_A
and Table_1.col_B=Table_2.col_B
and Table_1.col_C=Table_2.col_C
and Table_1.col_D=Table_2.col_D
go
insert into new_table
select Table_1.* , Table_2.col_F
from Table_1
inner join Table_2
on Table_1.col_A=Table_2.col_A
and Table_1.col_B=Table_2.col_B
and Table_1.col_C=Table_2.col_C
where concat (Table_1.col_A, Table_1.col_B , Table_1.col_C , Table_1.col_D , Table_1.col_E
not in (select concat (col_A, col_B , col_C , col_D , col_E) from new_table)
go
insert into new_table
select Table_1.* , Table_2.col_F
from Table_1
inner join Table_2
on Table_1.col_A=Table_2.col_A
and Table_1.col_B=Table_2.col_B
where concat (Table_1.col_A, Table_1.col_B , Table_1.col_C , Table_1.col_D , Table_1.col_E
not in (select concat (col_A, col_B , col_C , col_D , col_E) from new_table)
go
insert into new_table
select Table_1.* , Table_2.col_F
from Table_1
inner join Table_2
on Table_1.col_A=Table_2.col_A
where concat (Table_1.col_A, Table_1.col_B , Table_1.col_C , Table_1.col_D , Table_1.col_E
not in (select concat (col_A, col_B , col_C , col_D , col_E) from new_table)
go
您可以在colA上加入他们,然后分配一些不同的号码: