Es gibt zwei mögliche Gründe für den Versuch, foo.a auf NULL zu aktualisieren.
- Es gibt Zeilen in foo, für die es keine passenden Zeilen in bar gibt.
- Die übereinstimmende Zeile in bar hat bar.x von null.
Im Folgenden werden Aktualisierungen von foo ausgeschlossen, wenn eine der oben genannten Bedingungen zutrifft. In diesen Fällen bleibt foo.a wie es war:
update foo
set a = (select distinct( x ) from bar where bar.y = foo.b )
where exists
(select *
from bar
where bar.y = foo.b
and bar.x is not null);