gpt4 book ai didi

mysql - Insert into on duplicate update Mysql错误

转载 作者:行者123 更新时间:2023-11-29 04:12:07 24 4
gpt4 key购买 nike

我正在尝试使用以下方法在 Mysql 中插入重复键更新:

INSERT INTO `generic_client_data` (id, keyword, client_id, desc_id) 
VALUES (NULL, qqqq, 115, 0) ON DUPLICATE KEY
UPDATE keyword=VALUES(qqqq), client_id=VALUES(115), desc_id=VALUES(0)

但它给了我这个错误:

#1064 - You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax
to use near '115), desc_id=VALUES(0)' at line 1

有什么原因吗?

最佳答案

查询的 UPDATE 部分中的 VALUES“函数”指的是您在 INSERT 部分中使用的列名。你想要的是这个:

INSERT INTO `generic_client_data` (id, keyword, client_id, desc_id) 
VALUES (NULL, 'qqqq', 115, 0) ON DUPLICATE KEY
UPDATE keyword=VALUES(keyword), client_id=VALUES(client_id), desc_id=VALUES(desc_id);

这样,您就可以返回到要插入的任何值;它们可能是计算值,或者它们可能来自 SELECT 查询。当您遇到更复杂的查询时,我想您会发现这比您尝试做的要方便得多。

大多数时候,当您使用 ON DUPLICATE KEY UPDATE 时,除了

UPDATE x=VALUES(x), y=VALUES(y), z=VALUES(z)

对于您想插入的任何列。

如果您真的只是想插入您为各个列指定的值,则省去 VALUES();你可以这样做:

INSERT INTO `generic_client_data` (id, keyword, client_id, desc_id) 
VALUES (NULL, 'qqqq', 115, 0) ON DUPLICATE KEY
UPDATE keyword='qqqq', client_id=115, desc_id=0

但是,这需要您输入所有值两次,并且每次更改语句时都必须确保所有值都匹配。

阅读手册不会有什么坏处,如错误消息所示: http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html

关于mysql - Insert into on duplicate update Mysql错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7579762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com