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

Jak zaktualizować za pomocą wewnętrznego sprzężenia w Oracle

Ta składnia nie będzie działać w Oracle SQL.

W Oracle możesz zaktualizować sprzężenie, jeśli tabele są „zachowane przez klucz”, tj.:

UPDATE (SELECT a.val_a, b.val_b
          FROM table a
          JOIN table b ON a.b_pk = b.b_pk)
   SET val_a = val_b

Zakładając, że b_pk jest głównym kluczem b , tutaj połączenie można aktualizować, ponieważ dla każdego wiersza A jest co najwyżej jeden wiersz od B, dlatego aktualizacja jest deterministyczna.

W twoim przypadku, ponieważ zaktualizowana wartość nie zależy od innej tabeli, możesz użyć prostej aktualizacji z warunkiem EXIST, na przykład tak:

UPDATE mytable t
   SET t.VALUE = 'value'
 WHERE EXISTS 
       (SELECT NULL
          FROM tableb b
         INNER JOIN tablec c ON c.id = b.id
         INNER JOIN tabled d ON d.id = c.id
         WHERE t.id = b.id
           AND d.key = 1)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Top 5 czasochłonnych zapytań SQL w Oracle

  2. 3 sposoby sprawdzania typu danych kolumny w Oracle

  3. Jak zwrócić liczbę sekund po północy w bazie danych Oracle?

  4. Stronicowanie z Oracle

  5. Jak przekazać argumenty do skryptu PL/SQL w wierszu poleceń za pomocą SQLPLUS?