Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да актуализирате с вътрешно присъединяване в Oracle

Този синтаксис няма да работи в Oracle SQL.

В Oracle можете да актуализирате присъединяване, ако таблиците са "запазени с ключ", т.е.:

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

Ако приемем, че b_pk е първичният ключ на b , тук присъединяването може да се актуализира, защото за всеки ред от A има най-много един ред от B, следователно актуализацията е детерминирана.

Във вашия случай, тъй като актуализираната стойност не зависи от друга таблица, можете да използвате проста актуализация с условие EXIST, нещо като това:

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. Вземете ID на последния вмъкнат запис в oracle db

  2. Намиране на причината за грешка в блокиране от файла за проследяване на Oracle

  3. Функция RAWTOHEX() в Oracle

  4. Зона за бързо възстановяване на Oracle

  5. Изтрийте с Join в Oracle sql Query