SQL 查询 - 如果存在则更新,否则插入

Posted

技术标签:

【中文标题】SQL 查询 - 如果存在则更新,否则插入【英文标题】:SQL query- Update if exists, insert otherwise 【发布时间】:2011-03-14 09:44:16 【问题描述】:

我需要为 mysql 编写一个 SQL 查询,以便如果行存在则更新,如果不存在则插入。

如果行存在...

UPDATE Table1 SET (...) WHERE Column1='SomeValue'

如果它不存在...

INSERT INTO Table1 VALUES (...)

这可以在一个查询中完成吗?

【问题讨论】:

【参考方案1】:

我认为你需要颠倒你的逻辑才能让它发挥作用:

插入一个表 - 如果它存在(相同的键)然后更新它。

这可以通过ON DUPLICATE 语句来实现,如下所示:

INSERT INTO Table1 VALUES(...)
ON DUPLICATE KEY UPDATE column=column+1

查看手册here

【讨论】:

非常聪明。正是我所追求的。谢谢。 太棒了。虽然这篇文章很旧,但它非常有帮助。你摇滚。【参考方案2】:

使用INSERT... ON DUPLICATE KEY UPDATE 语法。

见manual

(出于搜索目的,顺便说一句,这通常被称为“upsert”)

【讨论】:

以上是关于SQL 查询 - 如果存在则更新,否则插入的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server CE:如果存在更新,否则插入

SQL:如果存在则更新,否则插入...但对于具有不同值的多行

如果存在,我需要更新,否则使用 Linq 插入 SQL

MySQL:如果存在则获取 ID,否则插入并返回 ID

如果存在则更新,否则插入[重复]

如果记录存在则插入和更新,否则不存在竞争条件