如果行不存在具有相同值

时间:2017-03-03 13:36:42

标签: mysql sql

在mySql中,如果特定电子邮件不存在行,如何插入行,我需要从数据库表创建一千个缺少的行,我有一个五千封电子邮件的文件我不知道哪个电子邮件已经存在在表中,哪个不是。

我尝试为这样的每一行构造一个sql语句,但它是无效的sql语法

insert into License (email) select unique 'person@gmail.com' where not exists (select 1 from License where email='person@gmail.com');

电子邮件不是表格的主键,也不是唯一的,我所关心的是如果没有电子邮件地址的记录添加记录,否则不会。

1 个答案:

答案 0 :(得分:2)

您可以通过为from

设置where子句来解决此问题
insert into License (email)
    select email
    from (select 'person@gmail.com' as email) t
    where not exists (select 1 from License l where l.email = t.email);

但是,在一个语句中执行所有插入更有意义:

insert into License (email)
    select t.email
    from database_table t
    where not exists (select 1 from License l where l.email = t.email);

如果您只想要1000个,可以添加limit 1000