2012-07-20 63 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