我从这个INSERT上的重复键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语句的正确方法是什么?
发布于 2016-07-06 07:20:43
由于您遇到了外键约束,所以您必须解决插入才能工作。
您的查询应该类似于;
INSERT INTO Table1 ( field1, field2, foreign_key_id)
Select (1, 2, foreign_key_id)
where
...
ON DUPLICATE KEY UPDATE field1 = 1, field2 = 2我相信阅读这个问题的答案会解决你的问题。Mysql: How to insert values in a table which has a foreign key
发布于 2016-07-05 10:50:58
我不知道你到底想做什么。但是,您可以将任何select语句放入insert . . . select语句中,但仍然可以使用on duplicate key update。例如:
insert into Table1(field1, field2)
select 1, 2
from table1 t1 join
table2 t2
on t2.id = t1.field_id
where t2.addr = '123456'
on duplicate key update field1 = 1, field2 = 2;发布于 2016-07-05 11:58:09
Declare
@Field1 VARCHAR(255),
@Field2 VARCHAR(255)
SET @Field1= 'Test'
SET @Field2='ABC'
IF EXISTS (SELECT * FROM ##Table1 WHERE ##Table1.Field1=@Field1 AND ##Table1.Field2=@Field2)
BEGIN
UPDATE ##Table1 SET Field1=@Field1,Field2=@Field2
END
ELSE
BEGIN
INSERT INTO ##Table1 VALUES(@Field1,@Field2)
END
SELECT * FROM ##Table1 https://stackoverflow.com/questions/38201283
复制相似问题