如果某些列在不同数据库中是唯一的,则将值从一个表插入另一个表

时间:2018-03-17 12:41:15

标签: sql sql-server-2014

我的设置是以下我在同一台服务器上的数据库A和B. A和B具有相同的表名。我想将A的表中的数据附加到B的表中。但是,当且仅当该行在某些字段上是唯一的时,我想要从A到B附加某一行。例如,如果我有一个名为People的表。

在A

人:

ID   name Surname
1    Mark Anthony 
2    Julius Ceasar 
3    Marcus Crassus 

在B

ID   name   Surname 
1    Marcus Caelius
2    Julius Ceasar 
3    Sevilius Casca
4    Marcus Crassus 

我想在B数据库中的People表中添加A表中People表的行,其中name和surname字段尚不存在B.

所以结果将是

在B

ID   name   Surname 
1    Marcus Caelius
2    Julius Ceasar 
3    Sevilius Casca
4    Marcus Crassus 
5    Mark Anthony 

1 个答案:

答案 0 :(得分:0)

我认为这只是一个insert . . . select

insert into b.people(name, surname)
    select name, surname
    from a.people a
    where not exists (select 1 from b.people b where b.name = a.name and b.surname = a.surname);

这假定id字段是串行/标识/自动增量列。无论如何,这是最好的做法。

您也可以将其写为:

insert into b.people(name, surname)
    select name, surname
    from a.people a
    except
    select name, surname
    from b.people b;