使用别名表更新SQL仍会返回"表格不明确"错误

时间:2015-12-14 15:55:22

标签: sql sql-update table-alias

我正在尝试运行以下更新但是运行到"表格不明确"错误。

UPDATE dbo.cg
SET cg.column = gId.ID
FROM    dbo.a
        INNER JOIN dbo.cg as cId ON cId.[a] = dbo.a.[c]
        INNER JOIN dbo.cg as gId ON gId.[a] = dbo.a.[b];

表dbo.a包含用于根据与同一表的关系更新cg中的值与不同列中的值的数据。它是一个自引用层次结构。

正如你所看到的,一切都是别名的,所以我有点困惑,为什么这不会运行。

非常感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:10)

在SQL Server中,您应该使用update中的别名,而不是表格。此外,您没有名为cg的别名。所以像这样:

UPDATE cId
SET column = gId.ID
FROM dbo.a a INNER JOIN
     dbo.cg cId
     ON cId.[a] = a.[c] INNER JOIN
     dbo.cg gId
     ON gId.[a] = a.[b];

答案 1 :(得分:0)

不用担心,运气解决了。

我内心无奈地加入了桌子......

UPDATE dbo.cg
SET cg.column = gId.ID
FROM    dbo.a
        INNER JOIN dbo.cg as cId ON cId.[a] = dbo.a.[c]
        INNER JOIN dbo.cg as gId ON gId.[a] = dbo.a.[b]
        INNER JOIN cg ON cId.[a] = cg.[a];

如果有人能解释为什么会有效,我真的很感激理解下面的MS SQL逻辑。