如何使用join从一个表插入另一个表,从而消除重复

ttcibm8c  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(288)

这个问题在这里已经有答案了

mysql insert if value在另一个表中不存在(5个答案)
如果行不存在,则从另一个表(2个答案)插入到表中
两年前关门了。
我创建了一个表 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);

如何使insert语句只插入来自 B 表中不存在的 A (例如使用join语句?)?

insert into table a (
    select * from b
    );

(没有主键帮助)。加分是只检查两列是否相同(例如。 a1 != b1 以及 a2 != b2 ).
谢谢!

xoefb8l8

xoefb8l81#

这应该能满足您的需求:

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
z9ju0rcb

z9ju0rcb2#

试试这个

insert int a
select * from b
where (b1, b2, b3) not in (select a1, a2, a3 from a)
gblwokeq

gblwokeq3#

我会用 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);

相关问题