sql >> Databáze >  >> RDS >> Oracle

Jak aktualizovat pomocí vnitřního spojení v Oracle

Tato syntaxe nebude fungovat v Oracle SQL.

V Oracle můžete aktualizovat spojení, pokud jsou tabulky "key-preserved", 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

Za předpokladu, že b_pk je primární klíč b , zde je spojení aktualizovatelné, protože pro každý řádek A je maximálně jeden řádek od B, proto je aktualizace deterministická.

Ve vašem případě, protože aktualizovaná hodnota nezávisí na jiné tabulce, můžete použít jednoduchou aktualizaci s podmínkou EXIST, něco takového:

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. Metoda sběru:Funkce LIMIT v databázi Oracle

  2. dobrý postgresql klient pro Windows?

  3. Vytvořte uživatele z řetězcových proměnných v bloku PL/SQL

  4. Vytvořte novou tabulku ve stávající DB v samostatné třídě SQLiteOpenHelper