【问题标题】:Simple SQL Script in W3Schools not workingW3Schools 中的简单 SQL 脚本不起作用
【发布时间】:2021-11-16 09:03:22
【问题描述】:

我目前正在学习 SQL 并使用W3Schools Tryit Editor 来玩。我正在尝试使用来自另一个表的查找来更新一个表。我上网查了一下,想出了下面的代码来运行:

UPDATE OrderDetails
SET OrderDetails.ProductID = Orders.CustomerID
FROM Orders
INNER JOIN OrderDetails
ON OrderDetails.OrderID = Orders.OrderID

但它出现以下错误:“错误 1:无法准备语句(“。”附近的 1:语法错误)”

我的代码有问题还是 W3Schools 不想运行某些东西?

【问题讨论】:

  • 连接语法的更新是针对每个数据库的..所以你应该告诉我们你真正使用的是哪个数据库
  • dbfiddle.uk 也可用于基本的 SQL 测试。
  • @ScaisEdge,您的 SQLServer 脚本和 MySQL 脚本都不能在 W3Schools 中运行。我猜它不使用任何语法运行,我需要深入挖掘以找出它支持的语法。下面的哈雷代码确实有效。有谁知道那个版本叫什么?

标签: sql lookup-tables


【解决方案1】:

连接语法的更新是针对每个数据库的

您使用的查询对 SQLSERVER 有效

UPDATE OrderDetails
SET OrderDetails.ProductID = Orders.CustomerID
FROM Orders
INNER JOIN OrderDetails
ON OrderDetails.OrderID = Orders.OrderID

但不适用于我的 MySQL

UPDATE OrderDetails
INNER JOIN OrderDetails
ON OrderDetails.OrderID = Orders.OrderID
SET OrderDetails.ProductID = Orders.CustomerID

【讨论】:

    【解决方案2】:

    这行得通:

    UPDATE OrderDetails
    SET ProductID = (SELECT CustomerID FROM Orders WHERE OrderDetails.OrderID = Orders.OrderID)
    WHERE OrderID IN (SELECT OrderID FROM Orders);
    

    这是你想要的吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多