Oracle
 sql >> Database >  >> RDS >> Oracle

Aggiorna con la query Join in Oracle

A meno che il tuo SELECT subquery restituisce una singola riga, il tuo UPDATE l'istruzione dovrebbe fallire con l'errore

ORA-01427: single-row subquery returns more than one row

In genere, poiché hai un aggiornamento correlato, hai bisogno di alcune condizioni che mettano in relazione le righe nella tabella esterna T1 alle righe nella sottoquery interna per garantire che la sottoquery restituisca una singola riga. In genere assomiglierebbe a qualcosa di simile a

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);

Infine, questo UPDATE l'istruzione sta aggiornando ogni riga in T1 . È questo che intendi? Oppure vuoi aggiornare solo le righe in cui, ad esempio, trovi una corrispondenza nella tua sottoquery?