如何在更新的表上使用多个连接更新SQL Server上的表?(来自加入)

hoe*_*erf 3 sql sql-server sql-update

如何在更新的表上使用多个连接更新SQL Server上的表?在MySQL中,您可以为更新的表定义别名,但它如何与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
Run Code Online (Sandbox Code Playgroud)

-

RESULT: *The table 'o' is ambiguous.*
Run Code Online (Sandbox Code Playgroud)

Nik*_*vić 8

这适用于Sql Fiddle.

UPDATE o
SET parent_id = o2.ID
    FROM recert O
    JOIN c C ON C.ID = O.country_id
    JOIN recert P ON O.parent_id = P.ID and p.country_id <> O.country_id
    JOIN recert o2 on o2.name = p.name and c.ID = o2.country_id
    JOIN c c2 on c2.ID = o2.country_id
WHERE O.ID = o2.ID
Run Code Online (Sandbox Code Playgroud)

我想问题出现了,因为你试图重新别名别名,但我不确定.