我不知道這是否可以完成,但我想我會問。
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用于處理其他的東西,而現在只包含幾行。我想將這些行UPDATE Table2.MyRowCount用于相應的EntityIDusing a COUNT(*)from the Table1 WHERE #TempTable.EntityID = Table1.EntityID AND #TempTable.PrefType = Table1.PrefType.
我試過這個:
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 錯誤/不可能?
謝謝你的幫助。
uj5u.com熱心網友回復:
正如@DaleK 已經評論過的那樣-如有疑問,請查看官方檔案!那應該是您的第一站- 總是如此。
閱讀檔案,您會發現必須使用以下 SQL 陳述句:
-- UPDATE, then SET
UPDATE Table2
SET MyRowCount = T1Temp.T1RowCount
-- only then FROM and INNER JOIN
FROM 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/381077.html
標籤:sql sql-server 查询语句 内部联接
