2012-07-20 107 views
5

說內就選擇一些澄清,如果我有下面的T-SQL語句(設計,SQL Server 2008上運行):需要更新T-SQL語句

UPDATE tbl 
SET col1 = (
    SELECT MAX(col1) FROM tbl AS t1 WHERE t1.type = tbl.type 
); 

爲什麼說在這種情況下,選擇工作:

  1. 它選擇考慮到每個更新的結果,或

  2. 它從TBL選擇,因爲它是更新前開始更新記錄。

有人可以爲我澄清這一點嗎?

回答

4

2!您的子查詢SELECT會在UPDATE進行任何更改之前確定該值。

+0

我在一個實例中測試了它。而且......你說得對。謝謝。 – ahmd0 2012-07-20 20:24:09

-2

它是1

1. 它選擇考慮到每個更新的結果,或

+0

感謝您的快速回復。 – ahmd0 2012-07-20 08:36:31

+0

堅持...所以它是1或2 :)有沒有人有任何關於此文檔的參考? – ahmd0 2012-07-20 08:42:32

+0

試試看,@ ahmd0。沒有需要的文檔。 – ErikE 2012-07-20 15:42:40