sql >> Database >  >> RDS >> Oracle

Hoe te updaten met inner join in Oracle

Deze synthax werkt niet in Oracle SQL.

In Oracle kunt u een join bijwerken als de tabellen "key-preserved" zijn, dat wil zeggen:

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

Ervan uitgaande dat b_pk is de primaire sleutel van b , hier kan de join worden bijgewerkt omdat er voor elke rij van A maximaal . is één rij vanaf B, daarom is de update deterministisch.

In jouw geval, aangezien de bijgewerkte waarde niet afhankelijk is van een andere tabel, zou je een eenvoudige update kunnen gebruiken met een EXIST-voorwaarde, zoiets als dit:

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. Hoe VARCHAR(MAX) afdrukken met Print Statement?

  2. Toegang krijgen tot de database van een applicatie vanuit een andere applicatie

  3. Gedistribueerde transactie op gekoppelde server tussen sql-server en mysql

  4. Capaciteitsplanning met prestatiegegevens