我的设置是以下我在同一台服务器上的数据库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
答案 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;