UPDATE
TABLE_TA
SET
ABM=A.ABM
FROM
(SELECT ID,ABM FROM FINAL_DATA )A
INNER JOIN
TABLE_TA TB
ON
A.ID=TB.ID
在程序中编写此查询的人已离开公司。这个查询让我对表格感到困惑TABLE_TA任何人都可以告诉我这个表格的对象是创建两次还是一次?查询中的问题是在内部联接中他使用Alias [TB]然而更新表。
PS:查询可能不是逻辑上正确的,因为不需要额外的连接,但是这个点就是现在创建的对象。
答案 0 :(得分:1)
您发布的查询使用名为“A”的“DERIVED TABLE”。派生表是可以像表一样使用的结果集。请查看本文,了解它们的工作原理:http://www.programmerinterview.com/index.php/database-sql/derived-table-vs-subquery/
我认为你所拥有的声明的更好的书面版本是:
UPDATE TB
SET TB.ABM = A.ABM
FROM FINAL_DATA A
INNER JOIN TABLE_TA TB ON A.ID = TB.ID
解释:您的查询使用两个表(派生表“A”和TABLE_TA“TB”)..所以第一行应该是UPDATE TB
而不是UPDATE TABLE_TA
。更重要的是,在这里使用派生表完全没有必要。简单的连接就足够了。