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

如何在MySQL多值插入的ON DUPLICATE KEY UPDATE中避免使用VALUES()?

MySQL批量插入时ON DUPLICATE KEY UPDATE替代VALUES()的写法

MySQL官方已宣布VALUES()函数将在未来版本移除,针对你提供的批量插入语句,有两种常用的改写方式:

方法一:使用EXCLUDED关键字(推荐,MySQL 8.0.20+支持)

EXCLUDED关键字代表原本要插入的行的数据,直接用它来引用对应列即可,写法简洁且符合官方后续规范:

insert into my.table (id, text) 
values (1, 'hello world'), (2, 'hello again') 
on duplicate key update text = EXCLUDED.text;

方法二:用INSERT ... SELECT替代(兼容低版本MySQL)

如果你的MySQL版本不支持EXCLUDED,可以把批量值包装成子查询并指定别名,在更新时引用子查询的列:

insert into my.table (id, text) 
select id, text from (
    select 1 as id, 'hello world' as text union all
    select 2 as id, 'hello again' as text
) as temp_rows
on duplicate key update text = temp_rows.text;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:11:12