Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Aktualizowanie wiersza z podzapytaniem zwracającym wiele wierszy

W Oracle możesz umieszczać zapytania, które zwracają tylko jeden wiersz (podzapytania skalarne) w nawiasach i używać ich tak, jakbyś używał zmiennych/kolumn:

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

Jeśli podzapytanie zwraca więcej niż jeden wiersz, prawdopodobnie chcesz użyć SUM() w podzapytaniu.Edytuj:Jeśli nie łączysz tabel w podzapytaniu, prawdopodobnie powinieneś zamiast tego użyć dwóch podzapytań.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć zduplikowane kolejne wartości w tej tabeli?

  2. walidacja z błędem ora-02299

  3. jak zmienić rozmiar kolumny

  4. Jak wprowadzić powiązania dla parametru wielowartościowego w SQL Developer

  5. Java — policz dokładnie 60 znaków z ciągu znaków z kombinacją znaków UTF-8 i innych niż UTF-8