W3Schools在线编辑器运行多表关联UPDATE SQL脚本报错如何解决
SQL报错原因说明
- 你编写的是SQL Server、PostgreSQL数据库支持的UPDATE关联更新语法,该语法要求在UPDATE后接FROM子句关联其他表,但W3Schools Tryit Editor底层采用SQLite作为运行环境,并不支持该语法格式,因此抛出语法错误。代码本身逻辑没有问题,仅和平台支持的SQL方言不匹配。
- SQLite环境下实现相同逻辑可以使用子查询写法,示例如下:
UPDATE OrderDetails SET ProductID = ( SELECT CustomerID FROM Orders WHERE Orders.OrderID = OrderDetails.OrderID ) WHERE EXISTS ( SELECT 1 FROM Orders WHERE Orders.OrderID = OrderDetails.OrderID )
- 不同数据库的关联更新语法存在较大差异,例如MySQL支持的关联更新写法为:
UPDATE OrderDetails od INNER JOIN Orders o ON od.OrderID = o.OrderID SET od.ProductID = o.CustomerID
注:当前逻辑是把订单详情表的产品ID替换为对应订单的客户ID,仅为语法示例,实际业务中该操作无业务意义,请谨慎执行更新操作。
内容的提问来源于stack exchange,提问作者Matta
相关产品推荐
相关产品推荐

