sql >> Database >  >> RDS >> Oracle

Update met Join-query in Oracle

Tenzij uw SELECT subquery retourneert een enkele rij, uw UPDATE instructie zou moeten mislukken met de fout

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

Over het algemeen heb je, als je een gecorreleerde update hebt, een voorwaarde nodig die rijen in de buitenste tabel T1 met elkaar in verband brengt. naar rijen in de binnenste subquery om ervoor te zorgen dat de subquery één rij retourneert. Dat zou er over het algemeen ongeveer zo uitzien:

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

Eindelijk, deze UPDATE statement werkt elke rij in T1 bij . Is dat wat je van plan bent? Of wil je alleen de rijen updaten waar je bijvoorbeeld een match vindt in je subquery?



  1. Hoe SQL-variabelen in PHP te binden?

  2. Prioriteit wijzigen voor gelijktijdig programma

  3. Inleiding tot vergrendelingen

  4. Alternatief voor mysql_real_escape_string zonder verbinding te maken met DB