MariaDB关联更新order与order_product表时语法报错求助
修正MariaDB多表更新SQL语法错误
错误原因
你的SQL使用了类似SQL Server的UPDATE ... FROM ... JOIN语法,但MariaDB/MySQL不支持这种写法,同时order是SQL保留关键字,直接使用会触发语法错误。
修正后的SQL语句
UPDATE `order` o JOIN order_product op ON op.order_id = o.order_id SET o.total = o.total * 0.00001, op.price = op.price * 0.00001, op.total = op.total * 0.00001 WHERE o.currency_code = 'USD' AND o.currency_value = 0.00001000;
关键修改点
- 改用MariaDB支持的
UPDATE ... JOIN ...语法结构,将关联表直接通过JOIN连接到UPDATE子句后 - 用反引号
`包裹order表名,避免保留关键字冲突 - 使用表别名(
o代表order,op代表order_product)简化语句,提升可读性 - 由于WHERE条件依赖
order表的字段,使用INNER JOIN更合适(原LEFT JOIN会包含无匹配的order_product记录,但WHERE条件会过滤掉这些记录,INNER JOIN逻辑更准确)
内容的提问来源于stack exchange,提问作者Mehdi Gh
相关产品推荐
相关产品推荐

