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

编写带JOIN操作的UPDATE语句时FROM子句报语法错误

错误原因
  • 语法不兼容:UPDATE ... FROM 是SQL Server、PostgreSQL支持的多表更新语法,MySQL不支持该结构,如果在MySQL环境执行,会直接在FROM子句位置抛出语法错误。
  • 表声明逻辑冲突:即使在支持UPDATE ... FROM语法的数据库中运行,原语句也存在问题:要更新的目标表tbl_salesactivity_new(别名sn)没有在UPDATE关联的数据源中正确声明,反而在后续JOIN中重复关联目标表,会触发别名未定义、关联逻辑冲突的报错。
  • 额外注意:如果ar.ardelay字段是数值类型,过滤条件里不要给0加单引号,避免隐式类型转换导致索引失效、匹配结果异常;如果是字符类型,保留'0'的写法即可。
正确写法

根据使用的数据库选择对应语法:

MySQL 环境

MySQL多表更新不需要额外加FROM子句,直接在UPDATE后罗列关联表,再写关联条件、更新逻辑即可:

UPDATE tbl_salesactivity_new sn
INNER JOIN arh ar 
  ON sn.shipment = ar.shipment_id
SET sn.delay = 'Yes'
WHERE ar.ardelay > 0;

SQL Server / PostgreSQL 环境

这类数据库支持UPDATE ... FROM语法,目标表在UPDATE后声明,FROM子句中写关联的其他表即可,不要重复关联目标表:

UPDATE sn
SET sn.delay = 'Yes'
FROM tbl_salesactivity_new sn
INNER JOIN arh ar 
  ON sn.shipment = ar.shipment_id
WHERE ar.ardelay > 0;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:24:21