如何使用消除重复的联接从另一个表中插入一个表[重复]
Posted
技术标签:
【中文标题】如何使用消除重复的联接从另一个表中插入一个表[重复]【英文标题】:How to insert in one table from another table by using Join that eliminates duplicates [duplicate] 【发布时间】:2018-07-10 12:40:44 【问题描述】:我创建了一个表 A
和 B
具有完全相同的列:
create or replace table a (
a1 varchar(30),
a2 int,
a3 int
);
create or replace table b (
b1 varchar(30),
b2 int,
b3 int
);
然后在每个中插入2个值:
insert into a values ('abc', 1, 2);
insert into a values ('abd', 1, 2);
insert into b values ('abd', 1, 2);
insert into b values ('abe', 1, 2);
如何制作插入语句,以便它只插入来自B
且在表A
中不存在的记录(例如,使用连接语句?)?
insert into table a (
select * from b
);
(没有主键帮助)。
奖励点是仅检查 2 列是否相同(例如 a1 != b1
和 a2 != b2
)。
谢谢!
【问题讨论】:
澄清一下:在给出的示例中,您希望将行'abe', 1, 2
插入到表 a
中?
【参考方案1】:
这应该可以满足您的需求:
insert into a
select b.*
from b left join a on a.a1 = b.b1 and a.a2 = b.b2
where a.a1 is null
【讨论】:
这也很有效。谢谢...【参考方案2】:我会使用not exists
:
insert into a (a1, a2, a3)
select b1, b2, b3
from b
where not exists (select 1 from a where a1 = b.b1 and a2 = b.b2);
【讨论】:
成功了,谢谢...【参考方案3】:试试这个
insert int a
select * from b
where (b1, b2, b3) not in (select a1, a2, a3 from a)
【讨论】:
这也很有效。谢谢...以上是关于如何使用消除重复的联接从另一个表中插入一个表[重复]的主要内容,如果未能解决你的问题,请参考以下文章