【发布时间】:2022-01-17 10:30:01
【问题描述】:
我不知道这是否可以做到是一个单一的声明,但我想我会问。
一个 SQL Server 2014 存储过程涉及 3 个表:
CREATE TABLE #TempTable
(
EntityID int,
PrefType smallint,
Col1 int,
Col2 int
)
Table1
(
EntityID int,
PrefType smallint
)
Table2
(
EntityID int,
MyRowCount int
)
#TempTable 用于处理其他内容,现在只包含几行。我想使用来自Table1 WHERE #TempTable.EntityID = Table1.EntityID AND #TempTable.PrefType = Table1.PrefType 的COUNT(*) 将这些行用于UPDATE Table2.MyRowCount 对应的EntityID。
我试过了:
UPDATE Table2 T2
INNER JOIN (SELECT T1.EntityID,
COUNT(*) T1RowCount
FROM Table1 T1, #TempTable2 TT
WHERE T1.EntityID = TT.EntityID
AND T1.PrefType = TT.PrefType
GROUP BY T1.EntityID) AS T1Temp ON T1Temp.EntityID = T2.EntityID
SET T2.MyRowCount = T1Temp.T1RowCount
但我收到一个语法错误(上面“UPDATE Table2 T2”中 T2 下的波浪线)告诉我:
“T2”附近的语法不正确。期待 SET。
INNER 和 AS 下的另一条波浪线也带有“不正确的语法”。
这可能是使用旧版本 SQL Server (2014) 的问题吗?还是我的 SQL 错误/不可能?
感谢您的帮助。
【问题讨论】:
-
如果您检查documentation,您会看到
join(在更新中)您需要from,而set位于from之前。 (几乎就像错误告诉你的那样)。
标签: sql sql-server tsql inner-join