You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Error (1064)错误排查:ON DUPLICATE KEY UPDATE语法问题咨询

解决INSERT ... ON DUPLICATE KEY UPDATE的1064语法错误

嘿,这个1064语法错误我太熟了!从你描述的报错信息right syntax to use near '10)'来看,大概率是你在ON DUPLICATE KEY UPDATE后面的写法犯了基础语法错误——直接写了值,没指定要更新的字段。

常见错误场景

比如你可能写了类似这样的错误语句:

INSERT INTO your_table (acol, bcol, ccol) 
VALUES ('a_val', 'b_val', 10) 
ON DUPLICATE KEY UPDATE 10; -- 这里直接写值,完全不符合语法要求

MySQL的ON DUPLICATE KEY UPDATE子句要求你明确指定哪个字段要更新成什么值,格式必须是字段名 = 新值,不能只写一个值就完事。

正确的写法示例

假设你要更新的是ccol字段,正确的语句应该是下面两种之一:

  1. 直接赋值固定值:
INSERT INTO your_table (acol, bcol, ccol) 
VALUES ('a_val', 'b_val', 10) 
ON DUPLICATE KEY UPDATE ccol = 10;
  1. 复用INSERT语句里对应字段的值(更灵活,适合批量插入场景):
INSERT INTO your_table (acol, bcol, ccol) 
VALUES ('a_val', 'b_val', 10) 
ON DUPLICATE KEY UPDATE ccol = VALUES(ccol);

其他可能的语法坑

如果还有问题,可以排查这几点:

  • 如果要更新多个字段,要用逗号分隔,比如UPDATE ccol=10, dcol='updated_val'
  • 如果你的字段名是MySQL的关键字(比如order、user),需要用反引号包裹字段名,比如UPDATE order = 10
  • 检查VALUES子句里的字段和值的数量是否匹配,有没有多写或少写逗号

内容的提问来源于stack exchange,提问作者Toleo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:11:54