如果MySQL中的数据库中尚未包含某个值,则插入一行

时间:2014-05-21 00:57:21

标签: mysql

我有一份人员及其信息,名字,姓氏,电子邮件,电话等列表....

无论出于何种原因,当我的同事将此列表导入数据库时​​,他并没有让所有人都在那里。现在,我需要让500名没有进入系统的人参与进来。我认为最快的方法是做一些类似“如果还没有'foobar'的电话号码就插入这个人。”

有没有办法在MySQL中执行此操作?我试过这样做:

if not exists(Select 1 from <My Table Name> where phone = '1234567890')
Begin
    <Code to insert new person>
End

但MySQL告诉我有一个错误:

  

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在“IF not exists(SELECT 1 FROM WHERE pphone ='1234567890',第1行)附近使用正确的语法

1 个答案:

答案 0 :(得分:1)

只需使用insert ignoreinsert on duplicate key update即可。这是一个例子:

insert into <my table name>(phone, . . . )
    Select '1234567890', . . .
    on duplicate key update phone = phone;

on duplicate key update子句不执行任何操作,但insert不会返回错误。

编辑:

好的,上述情况不起作用,因为您无法宣布电话号码是重复的。相反,你可以这样做:

insert into <my table name>(phone, . . . )
    Select '1234567890', . . .
    from dual
    where not exists(Select 1 from <My Table Name> where phone = '1234567890');