JOIN关联更新表时出现#1064语法错误求助
解决MariaDB中UPDATE JOIN的1064语法错误
Hey,这个问题我碰到过好多次啦!你写的是SQL Server风格的UPDATE ... FROM ... JOIN语法,但MariaDB(以及MySQL)并不支持这种写法,这就是导致你遇到1064语法错误的核心原因。
你的错误原语句
UPDATE product SET Product_entr_notes = t2.note ,Product_entr_email = t2.email ,Product_entr_mobile = t2.Mobile ,Product_entr_phone = t2.Home_Phone FROM product AS t1 INNER JOIN result AS t2 ON t1.id = t2.ACTID
适配MariaDB的正确写法
你需要换成MariaDB原生支持的UPDATE ... JOIN ... SET结构,把JOIN子句直接紧跟在UPDATE后面,具体代码如下:
UPDATE product AS t1 INNER JOIN result AS t2 ON t1.id = t2.ACTID SET t1.Product_entr_notes = t2.note, t1.Product_entr_email = t2.email, t1.Product_entr_mobile = t2.Mobile, t1.Product_entr_phone = t2.Home_Phone
额外说明
- 这里我们给两张表都起了别名,通过别名明确指定更新字段和数据来源,MariaDB就能正确解析语法了。
- 你原错误提示里提到的
WHERE t1.id = t2.ACTID其实已经被JOIN的ON条件覆盖了,完全不需要重复添加,不然反而会冗余。
内容的提问来源于stack exchange,提问作者nealmegh
相关产品推荐
相关产品推荐

