2010-07-28 37 views
2

我試圖在駐留在另一個表列中的數據填充表中的新列。使用另一個表的列值更新表中的所有列值(通過外鍵相關)

UPDATE dbo.PackageSessionNodes 
    SET  Created_By = 
       (select userid from dbo.PackageSessions, dbo.PackageSessionNodes 
       where dbo.PackageSessions.PackageSessionId 
         = dbo.PackageSessionNodes.PackageSessionId) 

更新因子查詢回退多個值而失敗。 我顯然是一個SQL noob,所以任何幫助將不勝感激。

Thx!

回答

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?

+0

PackageSessionId對於PackageSessionNode確實是唯一的。 這樣做,謝謝你的幫助! – 2010-07-28 10:18:34

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) 

如果您有多個不同的結果正在返回,這種情況仍會失敗,在這種情況下,您需要定義要使用哪一個結果。

相關問題