SQL Server对象创建

时间:2015-06-15 07:14:11

标签: sql sql-server

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:查询可能不是逻辑上正确的,因为不需要额外的连接,但是这个点就是现在创建的对象。

1 个答案:

答案 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。更重要的是,在这里使用派生表完全没有必要。简单的连接就足够了。