如何插入条件为“如果不存在”的数据

时间:2015-03-19 06:14:10

标签: sql insert

我想只插入B中的行,其中Role || Email与A中已存在的Role || Email不匹配,忽略其余的(如NAME)。

我的表是:

  • 表A有三列(NAME,ROLE,EMAIL)
  • 表B有三列(NAME,ROLE,EMAIL)

我尝试了以下内容:

insert into A (NAME, ROLE, EMAIL) 
SELECT NAME, ROLE, EMAIL from B 
where NOT EXISTS (SELECT ROLE, EMAIL FROM B WHERE A.NAME = B.NAME AND A.EMAIL = B.EMAIL);

虽然它不起作用,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

insert into A (NAME, ROLE, EMAIL)
select B.NAEM,B.ROLE,B.EMAIL from B left outer join A 
on B.ROLE=A.ROLE and B.EMAIL=A.EMAIL
where A.ROLE is null

确保您的ROLE列中没有空值,如果是,请将A.ROLE is null更改为(NAME,ROLE,EMAIL)中永远不会为空的任何列。

相关问题