Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用别名表更新SQL仍然返回“0”;“表格不明确”;错误_Sql_Sql Update_Table Alias - Fatal编程技术网

使用别名表更新SQL仍然返回“0”;“表格不明确”;错误

使用别名表更新SQL仍然返回“0”;“表格不明确”;错误,sql,sql-update,table-alias,Sql,Sql Update,Table Alias,我正在尝试运行下面的更新,但遇到了“table is Dimensional”错误 表dbo.a包含数据,用于根据与同一表的关系以及不同列中的值更新cg中的值。它是一个自引用层次结构 正如你所看到的,所有的东西都有别名,所以我有点困惑为什么它不能运行 非常感谢您提供的任何帮助。在SQL Server中,您应该使用更新中的别名,而不是表中的别名。此外,您没有名为cg的别名。比如说: UPDATE cId SET column = gId.ID FROM dbo.a a INNER JOIN

我正在尝试运行下面的更新,但遇到了“table is Dimensional”错误

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

正如你所看到的,所有的东西都有别名,所以我有点困惑为什么它不能运行


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

在SQL Server中,您应该使用
更新中的别名,而不是表中的别名。此外,您没有名为
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];

不用担心,幸运地解决了它

我绝望地把桌子连在一起

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

SET cg.column=..
,那么,您的查询中有2个
cg
表,这就是为什么即使我给另外两个表加了别名,您仍会收到该消息?我已经考虑过你会如何建议我给这个场景加上别名,甚至比我之前做的还要多。非常感谢戈登的回复。我已经试过了,我必须说,绕过这一点,但我感谢快速的反应。
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];