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

Opdatering af række med underforespørgsel, der returnerer flere rækker

På Oracle kan du vedlægge forespørgsler, der kun returnerer én række (skalære underforespørgsler) i parentes og bruge dem, som du ville bruge variabler/kolonner:

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

Hvis underforespørgslen returnerer mere end én række, vil du sandsynligvis bruge SUM() i underforespørgsel. Rediger:Hvis du ikke forbinder tabeller i underforespørgsel, bør du sandsynligvis bruge to underforespørgsler i stedet.

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. Forespørgselsudførelse

  2. Offset/Fetch-baseret personsøgning (implementering) i EntityFramework (ved hjælp af LINQ) til SQL Server 2008

  3. Hvilken MySQL-type er bedst egnet til priskolonnen?

  4. Sådan installeres MySQL på Debian 7