it-swarm-eu.dev

Jak aktualizovat tabulku z jiné tabulky

Mám jednu tabulku A, která má sloupec (id, pole_1, pole_2), a druhou tabulku B, která obsahuje sloupec (id, pole_2)

Nyní chci sloučit tabulku B do A, to znamená, že chci aktualizovat pole_2 v tabulce A na hodnotu tabulky B. Jak tedy implementovat? BTW Používám Oracle

Dík

29
zjffdu

Alternativním přístupem k souvisejícímu poddotazu (navrženému Kerri) by bylo použití příkazu MERGE, který možná bude účinnější než podvýběr (což lze ověřit pouze při pohledu na plán provedení obě prohlášení).

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

Ne přesně jistý, co děláte po tomto, ale mělo by to fungovat jako jednorázové nebo kontinuální prostřednictvím naplánované úlohy:

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

Nyní pokaždé, když se provede výše uvedené, provede to ve všech řádcích v tabulce. Pokud je to něco, co musíte neustále dělat, navrhl bych něco jiného, ​​ale u jednorázových nebo velmi malých stolů by to mělo stačit.

15
Kerri Shotts

Udělal jsem to úspěšně pomocí jedné tabulky v user1 z jiné tabulky v 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

Mohli byste vytvořit spouštěč v tabulce B, který aktualizuje tabulku A pokaždé, když se aktualizuje pole_2 v tabulce B. Další informace o vytváření spouštěčů naleznete zde - http://download.Oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#BABCIBBJ

1
SqlSandwiches