J'ai deux tables, une destination pour la mise à jour:Pourquoi SQL Server échoue-t-il lorsque le résultat d'un UPDATE est ambigu?
create table dest (value int)
insert into dest values (0)
et une source:
create table source (value int)
insert into source values (4)
insert into source values (1)
Si je lance cette requête:
UPDATE dest SET value = (select value from source WHERE 1=1)
SQL Server échoue avec:
Subquery returned more than 1 value. This is not permitted when
the subquery follows =, !=, <, <= , >, >= ...
qui est parfait. Mais si je lance cette requête:
UPDATE dest SET value = source.value FROM dest INNER JOIN Source ON 1=1
... il choisit au hasard une des valeurs de la source et des mises à jour dest avec elle.
Effrayant? Y a-t-il une explication à cela?
+1: Bonne explication. –