我正在尝试使用驻留在另一个表的列中的数据填充表中的新列。
UPDATE dbo.PackageSessionNodes
SET Created_By =
(select userid from dbo.PackageSessions, dbo.PackageSessionNodes
where dbo.PackageSessions.PackageSessionId
= dbo.PackageSessionNodes.PackageSessionId)
由于子查询返回多个值,更新失败。 我显然是一个sql noob,所以任何帮助都会受到赞赏。
THX!
答案 0 :(得分:4)
我认为您正在寻找这种语法:
update dbo.PackageSessionNodes set Created_By = p.userid
from dbo.PackageSessionNodes pn
left join dbo.PackageSessions p on p.PackageSessionId = pn.PackageSessionId
我假设一个PackageSessionNode只能有一个PackageSession?
答案 1 :(得分:0)
您的原始查询正在进行笛卡尔联接,这可能会解释多个结果
替换
dbo.PackageSessions , dbo.PackageSessionNodes
带
dbo.PackageSessions
并添加DISTINCT
UPDATE dbo.PackageSessionNodes
SET Created_By =
(select DISTINCT userid from dbo.PackageSessions
where dbo.PackageSessions.PackageSessionId =
dbo.PackageSessionNodes.PackageSessionId)
如果您返回了多个不同的结果,则仍然会失败,在这种情况下您需要定义要使用的结果。