我正在研究SQL UPDATE命令的各種效果。SQL UPDATE和FROM子句。如何知道哪個表正在更新?
在閱讀MSDN official definition,他們提到在兩個UPDATE和FROM子句在同一個表的更新的例子
即:
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,sp
鏈接。
這很簡單,但如果沒有別名呢?
即:
UPDATE Sales.SalesPerson
SET SalesYTD = SalesYTD + SubTotal
FROM Sales.SalesPerson
...
更新如何會知道哪些表(行)的情況下它的更新?我的問題特別是要知道它要更新的表的哪個「實例」,UPDATE語句中提到的那個或FROM子句中提到的那個「實例」?
任何關於上述MSDN的例子的澄清將不勝感激。
感謝
UPDATE 可能最初的例子已經被寫成這樣......?
UPDATE sp
SET sp.SalesYTD = sp.SalesYTD + SubTotal
FROM Sales.SalesPerson AS sp
...
如果你沒有定義別名,那麼你必須使用'Sales.SalesPerson'而不是'SP' – 2015-03-25 04:44:14
@NoDisplayName謝謝,但它已經這樣做了。 – Fandango68 2015-03-25 04:45:06
第二個示例將更新SalesPerson表中的所有行,因爲您尚未指定任何where子句。根本不清楚SubTotal從哪裏來。 – 2015-03-25 04:54:20