不存在时插入 SQL

Posted

技术标签:

【中文标题】不存在时插入 SQL【英文标题】:SQL Insert when not exists 【发布时间】:2013-12-16 17:13:28 【问题描述】:

这个问题我找了一阵子,还是没解决……

我想检查mysql表中是否不存在一条记录,然后插入一条记录。

这是我的代码:

IF NOT EXISTS (SELECT * FROM personOffice WHERE personID = 2 AND officeID = 1)
    BEGIN
        INSERT INTO personOffice (personID, officeID) VALUES ('2', (SELECT officeID FROM offices WHERE title = 'Berlin'))
    END

Mysql 告诉我第一行有语法错误。

感谢您的解决方案。

【问题讨论】:

查看之前发布的答案:***.com/questions/1361340/… 【参考方案1】:
INSERT INTO personOffice(personID, officeID) 
SELECT '2', (SELECT officeID FROM offices WHERE title = 'Berlin') FROM dual
WHERE NOT EXISTS (SELECT * FROM personOffice WHERE personId = 2 AND officeID = 1)

【讨论】:

【参考方案2】:

你可以试试这个:

INSERT INTO personOffice (personID, officeID) 
VALUES ('2', (SELECT officeID FROM offices WHERE title = 'Berlin')) 
WHERE NOT EXISTS (SELECT * FROM personOffice WHERE personID = 2 AND officeID = 1)

【讨论】:

以上是关于不存在时插入 SQL的主要内容,如果未能解决你的问题,请参考以下文章

sql server 判断记录存在更新不存在插入

PL/SQL - 仅当记录不存在时才插入记录

sql - 如果不存在则插入

SQL在更新数据时,先判断数据是不是存在。存在就更新update,不存在就插入insert。

仅当行不存在时才插入 SQL

仅当记录不存在时才将 SQL 插入表中[重复]