Pokud váš SELECT
dílčí dotaz vrátí jeden řádek, váš UPDATE
příkaz by měl selhat s chybou
ORA-01427: single-row subquery returns more than one row
Obecně platí, že když máte korelovanou aktualizaci, potřebujete nějakou podmínku, která spojuje řádky ve vnější tabulce T1
na řádky ve vnitřním poddotazu, aby bylo zajištěno, že poddotaz vrátí jeden řádek. To by obecně vypadalo nějak takto
UPDATE table1 t1 SET (t1.col,t1.Output) = (
SELECT t2.col, t3.Output + t2.col
FROM tabl2 t3
LEFT JOIN table1 t2 ON t3.Join_Key = t2.Join_Key
WHERE t2.col is not NULL
AND t1.some_key = t2.some_key);
Nakonec tato UPDATE
příkaz aktualizuje každý řádek v T1
. To máš v úmyslu? Nebo chcete aktualizovat pouze řádky, kde například najdete shodu ve vašem dílčím dotazu?