【问题标题】:Syntax error SQL语法错误 SQL
【发布时间】:2015-04-04 03:52:32
【问题描述】:
我正在尝试运行此 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
ms-access
syntax
sql-update
vba
【解决方案1】:
正常的 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
【解决方案2】:
(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)。
【解决方案3】:
如果我不使用别名,它会起作用。
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