Mysql 关于重复密钥更新帮助

Mysql 关于重复密钥更新帮助,mysql,insert,Mysql,Insert,我尝试使用以下命令,但在“WHERE”附近出现错误。这是可能的,还是我需要使用其他东西 如果供应商不存在,请插入新行。如果供应商确实存在,则更新项目id等于某物的行 INSERT INTO vendor_item VALUES(1,1) ON duplicate KEY UPDATE vendor_id=1 WHERE item_id=3 没有WHERE子句。您只能更新与要插入内容重复的行,因此没有条件是没有意义的 如果您想要更复杂的操作,MySQL已经提供了。但也许最好不要完全在MySQL中

我尝试使用以下命令,但在“WHERE”附近出现错误。这是可能的,还是我需要使用其他东西

如果供应商不存在,请插入新行。如果供应商确实存在,则更新项目id等于某物的行

INSERT INTO vendor_item VALUES(1,1)
ON duplicate KEY UPDATE vendor_id=1
WHERE item_id=3
没有WHERE子句。您只能更新与要插入内容重复的行,因此没有条件是没有意义的


如果您想要更复杂的操作,MySQL已经提供了。但也许最好不要完全在MySQL中完成。重复密钥更新的工作方式如下所示。假设您有一个表(“tableA”),其中包含3个字段(fieldA、fieldB、fieldC),让我们假设fieldA设置为唯一。让我们假设该表中已经有1行数据: 字段a字段b字段c 1“foo”测试

考虑以下问题:

INSERT into tableA (fieldA,fieldB,fieldC) VALUES (1,'bar','example') ON DUPLICATE KEY UPDATE fieldB=VALUES(fieldB),fieldC=VALUES(fieldC)
MySQL将假定fieldA是唯一的,新记录将成为: 字段a字段b字段c 1“条形图”“示例”

与其他内容一样,我建议在将其用于生产之前先阅读:


你好。是的,你说得对,INSERT语句没有WHERE子句。我认为WHERE子句在UPDATE语句中起作用。看到我需要什么,你知道我可以在这个例子中使用什么吗?@Jim,但也许最好不要完全在MySQL中使用。你受限制吗?好的,谢谢。但我不确定这对我是否有效。我试图为用户提供一种更新记录的方法,如果在插入过程中没有输入行,则需要在更新过程中插入该行。我使用的是FK约束,这使得它有点困难。Alin,我几乎被MySQL锁定了。嗯,是的,不完全确定我写这篇文章时的想法。奇怪的