SQL UPDATE和FROM子句。如何知道哪个表正在更新?

时间:2015-03-25 04:41:19

标签: sql sql-server-2005

我正在研究SQL UPDATE命令的各种效果。

在阅读MSDN official definition时,他们提到了UPDATE和FROM子句中同一个表的UPDATE示例

即:

USE AdventureWorks;
GO
UPDATE Sales.SalesPerson
SET SalesYTD = SalesYTD + SubTotal
FROM Sales.SalesPerson AS sp
JOIN Sales.SalesOrderHeader AS so
    ON sp.SalesPersonID = so.SalesPersonID
    AND so.OrderDate = (SELECT MAX(OrderDate)
                        FROM Sales.SalesOrderHeader 
                        WHERE SalesPersonID = 
                              sp.SalesPersonID);
GO

很明显,该示例是从SalesYTD表更新Sales.SalesPerson,因为同一个表在FROM子句中链接但是与ALIAS {{1}相关联}。

这很简单,但如果它没有别名怎么办?

即:

sp

UPDATE如何知道它更新的表(行)的哪个实例?我的问题是专门知道哪个"实例"要更新的表,UPDATE语句中提到的表还是FROM子句中提到的表?

对于MSDN上述示例的任何澄清将不胜感激。

由于

更新 这样的原始例子是否已经写好了??

UPDATE Sales.SalesPerson
    SET SalesYTD = SalesYTD + SubTotal
    FROM Sales.SalesPerson
...

1 个答案:

答案 0 :(得分:1)

SQL始终更新UPDATE命令后指定的表/别名。更新FROM子句中定义的别名时,只有一个表。从

中选择并更新相同的表格