sql >> Databasteknik >  >> RDS >> Oracle

Uppdatera med Join-fråga i Oracle

Om inte din SELECT subquery returnerar en enda rad, din UPDATE uttalandet bör misslyckas med felet

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

I allmänhet, vassle du har en korrelerad uppdatering, behöver du något villkor som relaterar rader i den yttre tabellen T1 till rader i den inre underfrågan för att säkerställa att underfrågan returnerar en enda rad. Det skulle i allmänhet se ut ungefär som

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

Slutligen, denna UPDATE uttalandet uppdaterar varje rad i T1 . Är det vad du tänker? Eller vill du bara uppdatera de rader där du till exempel hittar en matchning i din underfråga?



  1. java.sql.SQLException:Åtkomst nekad för användaren 'root'@'localhost' (med lösenord:JA)

  2. Hur man skapar ett rullningsbart, uppdateringsbart ResultSet-objekt i JDBC

  3. Felsök ett fel när du försöker skapa en stor IMDB-modell

  4. Få ID för den infogade raden med C#