sql >> Databasteknik >  >> RDS >> Oracle

Uppdaterar rad med underfråga som returnerar flera rader

På Oracle kan du bifoga frågor som endast returnerar en rad (skalära underfrågor) inom parentes och använda dem som du skulle använda variabler/kolumner:

UPDATE Table1 t1
SET D = (SELECT t2.D + t3.D 
         FROM Table2 t2
             ,Table3 t3
         WHERE t1.P = t2.P 
           AND t1.A = t3.A);

Om underfrågan returnerar mer än en rad vill du förmodligen använda SUM() i underfrågan. Redigera:Om du inte sammanfogar tabeller i underfrågan, bör du förmodligen använda två underfrågor istället.

UPDATE Table1 t1
SET D = (SELECT sum(t2.D) 
         FROM Table2 t2
         WHERE t1.P = t2.P)
        +
        (SELECT sum(t3.D)
         FROM Table3 t3
         WHEREt1.A = t3.A)


  1. sql hur man kombinerar tre frågor från två tabeller till en fråga

  2. Hur använder man samma lista två gånger i WHERE-satsen?

  3. Spara data offline innan du postar

  4. SQL, hur man uppdaterar en tabellstruktur