语法错误 SQL

Syntax error SQL

我正在尝试 运行 这个 SQL 查询,但由于某种原因,它总是失败,说 Imp.FormularyID=F.FormularyID 行缺少运算符,我很困惑为什么。我仔细检查了语法,一切看起来都不错。非常感谢对此问题的任何帮助。

UPDATE ShouldImportMetricsIDsTable as Imp
INNER JOIN FN_DataDump_ALL_02012015 as F
ON Imp.FormularyID=F.FormularyID
SET Imp.FormularyName=F.FormularyName, Imp.ClientName=F.ClientName
WHERE Imp.FormularyID=F.FormularyID

正常的SQL语法是;

UPDATE Imp 
SET FormularyName=F.FormularyName, ClientName=F.ClientName
FROM ShouldImportMetricsIDsTable as Imp
INNER JOIN FN_DataDump_ALL_02012015 as F ON Imp.FormularyID=F.FormularyID

(1/2 加时赛)

您的 Sql 方言可能不支持更新语句中的联接。

在这种情况下,您可以求助于相关子查询:

 UPDATE ShouldImportMetricsIDsTable Imp
    SET Imp.FormularyName = (
                               SELECT F1.FormularyName
                                 FROM FN_DataDump_ALL_02012015 F1
                                WHERE F1.FormularyID = Imp.FormularyID
                            )
      , Imp.ClientName    = (
                               SELECT F2.ClientName
                                 FROM FN_DataDump_ALL_02012015 F2
                                WHERE F2.FormularyID = Imp.FormularyID
                            )
  WHERE EXISTS (
            SELECT 1
              FROM FN_DataDump_ALL_02012015 F
             WHERE F.FormularyID = Imp.FormularyID
        )

这假设 FormularyID 列在各自的表中被限制为唯一(即 PK/AK)。

如果我不使用别名就可以了。

UPDATE ShouldImportMetricsIDsTable 
INNER JOIN FN_DataDump_ALL_02012015
ON ShouldImportMetricsIDsTable.FormularyID=FN_DataDump_ALL_02012015.FormularyID
SET ShouldImportMetricsIDsTable.FormularyName=FN_DataDump_ALL_02012015.FormularyName, ShouldImportMetricsIDsTable.ClientName=FN_DataDump_ALL_02012015.ClientName
WHERE ShouldImportMetricsIDsTable.FormularyID=FN_DataDump_ALL_02012015.FormularyID