2010-07-05 17 views
6

¿Por qué esta declaración de actualización no se está compilando? Según el msdn, está perfectamente bien.La tabla 'dbo.UserProperties' es ambigua. ¿Por qué viene este error?

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)) 

Respuesta

10

Creo que necesita hacer referencia al Alias ​​en la ACTUALIZACIÓN para una auto-unión. Al menos intenté una ACTUALIZACIÓN con un autoinscribirse y el siguiente tipo de sintaxis funcionó para mí.

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: Yep. Mis pensamientos también –

Cuestiones relacionadas