it-swarm.it

Come aggiornare una tabella da un'altra tabella

Ho una tabella A con colonna (id, field_1, field_2) e un'altra tabella B con colonna (id, field_2)

Ora voglio unire la tabella B alla A, ciò significa che voglio aggiornare field_2 nella tabella A al valore della tabella B. Quindi, come implementarlo? A proposito sto usando Oracle

Grazie

29
zjffdu

Un approccio alternativo alla sottoquery correlata (suggerito da Kerri) sarebbe quello di utilizzare l'istruzione MERGE, che potrebbe essere più efficiente della sottoselezione (che può essere verificata solo guardando il piano di esecuzione di entrambe le dichiarazioni).

MERGE INTO table_b 
USING 
(
  SELECT id,
         field_2
  FROM table_a
) ta ON (ta.id = table_b.id)
WHEN MATCHED THEN UPDATE 
    SET table_b.field_2 = ta.field_2
30

Non esattamente sicuro cosa stai cercando in questo, ma questo dovrebbe funzionare come una tantum o continuo tramite un lavoro programmato:

UPDATE table_a a
   SET field_2 = ( SELECT field_2
                     FROM table_b b
                    WHERE b.id = a.id )
;

Ora, ogni volta che viene eseguito quanto sopra, lo farà su tutte le righe della tabella. Se questo è qualcosa che devi fare sempre, suggerirei qualcos'altro, ma per un tavolo unico o molto piccolo dovrebbe essere sufficiente.

15
Kerri Shotts

L'ho fatto con successo usando una tabella in user1 da un'altra tabella in user2:

update user1.table1 a
set a.field1 = (
  select b.field1
  from user2.table2 b
  where a.field1=b.field1
)
where <condition for update user1.table1>
2
Siddik

È possibile creare un trigger su tableB che aggiorna tableA ogni volta che field_2 su tableB viene aggiornato. Controlla qui per maggiori informazioni sulla creazione di trigger - http://download.Oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#BABCIBBJ

1
SqlSandwiches