我们可以考虑对同一行进行多次更新的必要性的一个示例:
create table t ( c1 int );
insert into t (c1) values (1);
insert into t (c1) values (2);
insert into t (c1) values (3);
update x1
set x1.c1 = X2.new
from t as x1
inner join
(
select 1 as c1, 100 as new
union sel 1, 101
union sel 1, 102
) as x2 on x1.c1 = x2.c1同一行有3个潜在的更新。join结果集有3倍于同一行的行。此行是否仅被访问一次?最终值是如何计算的?
发布于 2013-06-25 02:50:12
从更新documentation
在指定FROM子句以提供update操作的条件时要小心。如果UPDATE语句包含一个FROM子句,而该子句没有以这样的方式指定,即每次更新的列都只有一个值可用,即UPDATE语句不是确定性的,则该语句的结果是未定义的。
在这种情况下,结果是不确定的。最好将这些SQL语句视为错误。
https://stackoverflow.com/questions/17280518
复制相似问题