小编典典

将内连接和 where 子句添加到 INSERT INTO ON DUPLICATE KEY UPDATE

sql

我从此INSERT INTO ON DUPLICATE KEY UPDATE MySQL语句开始。

INSERT INTO Table1 ( field1, field2)
VALUES (1, 2)
ON DUPLICATE KEY UPDATE field1 = 1, field2 = 2

然后,我遇到了一个错误“外键约束失败”。

我意识到我需要添加另一个 WHERE 子句条件来满足具有内连接的外键约束。

我试过这样的事情;

INSERT INTO Table1 ( field1, field2)
Inner Join Table2
ON Table2.id = Table1.field_id
VALUES (1, 2)
ON DUPLICATE KEY UPDATE field1 = 1, field2 = 2
WHERE Table2.addr='123456'

我收到语法错误。编写此 MySQL 语句的正确方法是什么?


阅读 200

收藏
2021-05-30

共1个答案

小编典典

由于您遇到了外键约束,因此您必须解决以便您的 INSERT 工作。

您的查询应该类似于;

INSERT INTO Table1 ( field1, field2, foreign_key_id)
Select (1, 2, foreign_key_id)
where 
...
ON DUPLICATE KEY UPDATE field1 = 1, field2 = 2
2021-05-30