Comment mettre à JOUR une table de SQL Server avec plusieurs Jointures sur la table mise à jour? (À PARTIR DE LA REJOINDRE)

Comment mettre à JOUR une table de SQL Server avec plusieurs Jointures sur la table mise à jour?
Dans MySQL, vous pouvez définir un Alias pour la mise à jour de la table, mais comment ça fonctionne avec TSQL.

 UPDATE recert.ou              --#1-- In MSSQL/TSQL no alias allowed
SET parent_id = o2.ID
    FROM recert.ou as O              
    JOIN recert.country C ON C.ID = O.country_id
    JOIN recert.ou P ON O.parent_id = P.ID and p.country_id <> O.country_id     
    JOIN recert.ou o2 on o2.name = p.name and c.ID = o2.country_id              
    JOIN recert.country as c2 on c2.ID = o2.country_id
           WHERE O.ID = o2.ID

-

RESULT: *The table 'o' is ambiguous.*
Pourquoi voudriez-vous alias o comme o?
Qu'advient-il si vous avez UPDATE O1 SET parent_id = O2.ID FROM o AS O1 blah blah blah...? TSQL t permettre à un alias pour apparaître dans la UPDATE déclaration. Mais je n'ai jamais essayé l'alias de la table à son propre nom avant.
Original: FROM recert.o AS o
Quelle version de Sql Server? J'ai juste vérifié par rapport à 2005, et oui, vous pouvez utiliser l'alias dans l'instruction update.
SQL Server 2008 R2: Msg 8154, Level 16, State 1, Line 2 The table 'recert.o' is ambiguous. Son parce que la JOIN recert.o Pet JOIN recert.o o2.

OriginalL'auteur hoerf | 2012-05-29