sql - insertar - update de una tabla a otra oracle
actualizar una tabla con datos de otra (5)
Tabla 1:
id name desc
-----------------------
1 a abc
2 b def
3 c adf
Tabla 2:
id name desc
-----------------------
1 x 123
2 y 345
¿Cómo ejecuto una consulta de actualización SQL que puede actualizar la Tabla 1 con el nombre y la descripción de la Tabla 2 usando la misma identificación? Entonces, el resultado final que obtendría es
Tabla 1:
id name desc
-----------------------
1 x 123
2 y 345
3 c adf
¿Cómo puede hacerse esto por:
- servidor SQL
- MySQL
- PostgreSQL
- Oráculo
Intenta seguir el código. Me está funcionando ...
UPDATE TableOne
SET
field1 =(SELECT TableTwo.field1 FROM TableTwo WHERE TableOne.id=TableTwo.id),
field2 =(SELECT TableTwo.field2 FROM TableTwo WHERE TableOne.id=TableTwo.id)
WHERE TableOne.id = (SELECT TableTwo.id
FROM TableTwo
WHERE TableOne.id = TableTwo.id)
Oracle 11g R2:
create table table1 (
id number,
name varchar2(10),
desc_ varchar2(10)
);
create table table2 (
id number,
name varchar2(10),
desc_ varchar2(10)
);
insert into table1 values(1, ''a'', ''abc'');
insert into table1 values(2, ''b'', ''def'');
insert into table1 values(3, ''c'', ''ghi'');
insert into table2 values(1, ''x'', ''123'');
insert into table2 values(2, ''y'', ''456'');
merge into table1 t1
using (select * from table2) t2
on (t1.id = t2.id)
when matched then update set t1.name = t2.name, t1.desc_ = t2.desc_;
select * from table1;
ID NAME DESC_
---------- ---------- ----------
1 x 123
2 y 456
3 c ghi
Ver también Oracle - Declaración de actualización con unión interna .
Para MySql:
UPDATE table1 JOIN table2
ON table1.id = table2.id
SET table1.name = table2.name,
table1.`desc` = table2.`desc`
Para el servidor Sql:
UPDATE table1
SET table1.name = table2.name,
table1.[desc] = table2.[desc]
FROM table1 JOIN table2
ON table1.id = table2.id
Utilice el siguiente bloque de consulta para actualizar Table1 con Table2 basado en ID:
UPDATE Table1, Table2
SET Table1.DataColumn= Table2.DataColumn
where Table1.ID= Table2.ID;
Esta es la forma más fácil y rápida de abordar este problema.
UPDATE table1
SET
`ID` = (SELECT table2.id FROM table2 WHERE table1.`name`=table2.`name`)