将 UPDATE 转换为 INSERT INTO ON DUPLICATE KEY UPDATE 语句

Posted

技术标签:

【中文标题】将 UPDATE 转换为 INSERT INTO ON DUPLICATE KEY UPDATE 语句【英文标题】:Convert UPDATE into INSERT INTO ON DUPLICATE KEY UPDATE statement 【发布时间】:2016-07-05 11:13:23 【问题描述】:

我有这个运行良好的 UPDATE mysql 语句。

UPDATE table1 
Inner Join table2 
ON table2.id = table1.gw_id 
SET table1.field1=1, table1.field2=2
WHERE table1.nick_no=4 AND table2.addr=123

我想转换此 UPDATE 语句,以便在找不到具有相同 table1_nick_no 的行时添加新行。我相信使用 INSERT INTO ON DUPLICATE KEY UPDATE 是正确的方法。但是,我尝试了很长时间,但失败了。 Adding Inner join and where clause to INSERT INTO ON DUPLICATE KEY UPDATE

我应该如何将此 UPDATE 语句转换为相应的 INSERT INTO ON DUPLICATE KEY UPDATE 语句?

【问题讨论】:

在您的问题中编辑查询以使用表别名,以便我们知道列的来源。 Gordon Linoff,我已编辑查询以显示列所属的表。 【参考方案1】:

您要查找的是 MERGE 或 UPSERT(UPDATE/INSERT 的缩写)。在 mySQL 中,您可以按照以下链接中的说明实现 UPSET

http://mechanics.flite.com/blog/2013/09/30/how-to-do-an-upsert-in-mysql/

【讨论】:

以上是关于将 UPDATE 转换为 INSERT INTO ON DUPLICATE KEY UPDATE 语句的主要内容,如果未能解决你的问题,请参考以下文章

MySQL INSERT INTO inside UPDATE 并将新主键设置为外键

sql 编辑中,要是有数据就update,数据为空就insert into 怎么实现,下图

Merge Into 语句代替Insert/Update在Oracle中的应用实战

8.INSERT INTO 语句 UPDATE 语句

merge into 语句代替Insert/Update

REPLACE INTO 和 INSERT INTO ... ON DUPLICATE KEY UPDATE SET ...