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

问题描述:

我需要为MySQL编写SQL查询,以便行更新(如果存在),但如果不存在则插入。SQL查询 - 如果存在更新,则插入,否则插入

如果行存在...

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

如果它不存在...

INSERT INTO Table1 VALUES (...) 

这能在一个查询做了什么?

我相信你需要扭转你的逻辑,以便为它工作:

插入表 - 如果存在(相同的密钥),然后对其进行更新。

这可以通过ON DUPLICATE语句,像这样来实现:

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

检查手册here

+0

非常巧妙。就是我以后的样子。谢谢。 – Urbycoz 2011-03-14 09:58:08

+1

太棒了。虽然这篇文章是旧的,但它是超级有用的。你摇滚。 – kmarks2 2012-02-09 20:18:34

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

参见manual

(对于搜索的目的,顺便说一句,这通常被称为 “更新插入”)