6

我正在尝试运行以下更新,但遇到“表不明确”错误。

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 中的值。它是一个自引用的层次结构。

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

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

4

2 回答 2

17

在 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];
于 2015-12-14T15:57:27.823 回答
4

不用担心,运气好就解决了。

我在绝望中将桌子与自己连接起来......

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 逻辑。

于 2015-12-14T16:17:41.253 回答