【发布时间】:2020-12-30 00:31:09
【问题描述】:
我需要使用 A_solarTypeDB.dbo.spaceList 中同一列中的值更新 B_solarTypeDB.dbo.spaceList 中所有行中的列
我在下面有这个 CTE,它返回 A_solarTypeDB.dbo.spaceList 中不在 B_solarTypeDB.dbo.spaceList 中的所有 astroID 值
有没有办法使用这些值对 B_solarTypeDB.dbo.spaceList 进行更新?
这是我对 CTE 的尝试:
UPDATE B_solarTypeDB.dbo.spaceList
SET astroID =
;WITH CTE AS
(
SELECT astroID FROM A_solarTypeDB.dbo.spaceList
EXCEPT
SELECT astroID FROM B_solarTypeDB.dbo.spaceList
)
SELECT astroID
FROM A_solarTypeDB.dbo.spaceList
WHERE astroID IN (SELECT astroID FROM CTE)
但在“;”附近出现语法错误
这是来自 A_solarTypeDB.dbo.spaceList 的示例数据:
spaceID spaceName typeID astroID
2937 Mars 1 9481ffg1
2938 Titan 3 4728ffu3
2939 MG1 7 4937fft5
我需要对 B_solarTypeDB.dbo.spaceList 进行更新,因为有时 astroID 的值为 NULL,而它应该与 A_solarTypeDB 数据库中的值相同。
谢谢!
【问题讨论】:
-
具体的更新逻辑是什么?
-
@TimBiegeleisen 谢谢,我忘了包括那个。我已更新原始问题以显示我尝试的
UPDATE命令和产生的错误。 -
样本数据会很有帮助。
-
@TimBiegeleisen 好主意...:) 完成!
-
您正在使用 CTE,就好像它是这里的查询一样。将 CTE 视为始终出现在查询本身之前的子查询。查询本身应以
WITH myCTE as {} UPDATE开头。
标签: tsql sql-server-2012 common-table-expression