2011-11-11 13 views
7

¿Cuál es el mejor método para agregar una columna a una tabla existente con los valores de una unión ... Por ejemplo:Agregar una nueva columna con los datos de una unión

Si me uno a la Tabla A a la Tabla B .. .

Select 
A.Column1, 
A.Column2, 
B.Column1, 
B.Column2, 
B.Column3 
FROM A 
INNER JOIN B 
ON A.Column1 = B.Column2 

Básicamente sólo quiero copiar la columna que existe en la Tabla B a lo largo de la Tabla a, ¿cómo puedo añadir nueva A.Column3 la Tabla a para que coincida con B.Column3 basado en la unión?

Respuesta

1

Primero use un comando alter table para agregar la nueva columna.

Epílogos utilizan actualización comando para poner los valores de B en la columna creada en A.

3

Tenga en cuenta que esto es probablemente no más eficiente método

alter table A add column3 [yourdatatype]; 

update A set column3 = (select column3 from B where A.Column1 = B.Column2) 
    where exists (select column3 from B where A.Column1 = B.Column2) 
-2

se puede hacer una nueva tabla utilizando instrucción INSERT:

INSERT INTO 
    NEW_A 
SELECT 
    A.*, 
    B.Column3 
FROM A 
    INNER JOIN B 
    ON A.Column1 = B.Column2 
+0

que quiere añadir a una tabla existente. –

+1

Gracias Hamikzo. Eso funcionó muy bien. – dorianpc

16

Pruebe esto:

alter table A add column3 datatype 

update A 
set column3 = B.column3 
from A inner join B on A.Column1 = B.Column2 
+5

El uso de 'de una unión interna B' es * significativamente * más lento que una simple cláusula' de B donde A.Column1 = B.Column2' en Postgres. (No estoy seguro si el primero funciona en absoluto; nunca lo completó). –

0

Usted puede hacer esto:

alter A add column3 datatype; 

update A 
inner join (select column2 ,column3, count(*) as cnt from B group by column2) b 
on A.column1 = b.column2 set 
A.column3 = b.column3; 
Cuestiones relacionadas