2010-07-05 32 views
6

爲什麼這個更新語句沒有被編譯?根據msdn,這是完全正確的。表'dbo.UserProperties'不明確。爲什麼這個錯誤即將到來?

UPDATE dbo.UserProperties 
    SET  Value = MergeFrom.Value 
FROM dbo.UserProperties MergeFrom , 
     dbo.UserProperties MergeTo 
WHERE MergeFrom.Field = MergeTo.Field 
     AND MergeTo.[Key] = CAST(@MergeToUserID AS NVARCHAR(50)) 
     AND MergeFrom.[Key] = CAST(@MergeFromUserID AS NVARCHAR(50)) 

回答

10

我認爲你需要在UPDATE中引用別名來進行自我JOIN。至少我只是嘗試了一個自我JOIN的UPDATE,下面這種語法適用於我。

UPDATE MergeTo 
    SET MergeTo.Value = MergeFrom.Value 
FROM dbo.UserProperties AS MergeFrom INNER JOIN 
      dbo.UserProperties AS MergeTo ON MergeFrom.Field = MergeTo.Field 
WHERE MergeTo.[Key] = CAST(@MergeToUserID AS NVARCHAR(50)) 
         AND MergeFrom.[Key] = CAST(@MergeFromUserID AS NVARCHAR(50)) 
+0

@ + 1:是。我的想法也是。 – 2010-07-05 07:57:21