尝试将数据从一个表合并到另一个表

时间:2014-07-18 15:20:55

标签: sql sql-server oracle

尝试执行我有一个现有表的过程。这是表A

我有上传数据的登台表。这是表B.

除了我需要从表B添加到表A的一些数据外,表A已经包含了数据。

因此,表B有一个额外的列,我需要它与表A中已存在的数据相匹配。

因此表A中的布局是:

Column 1 Column 2 Column 3

AB

ABC

表B中的布局是:

Column 1 Column 2 Column 3

ABC      Yellow   Test1

AB       Blue     Test2

所以我需要将这些第2列和第3列从表B移到表A,因此它们与第1列中已有的数据正确匹配。

尽我所能解释,英语是我的第二语言,所以我为任何错误道歉。无论如何,知道最好的方法是什么,它会合并吗?

谢谢

4 个答案:

答案 0 :(得分:0)

 Update TableA
 Set TableA.Column2=B.Column2,
       TableA.Column3=B.Column3
 From TableA A
      Inner Join TableB B ON B.Column1=A.Column1

答案 1 :(得分:0)

使用左外连接来合并数据

SELECT TableA.clomun1,
       Tableb.column2.tableb.column3                 
FROM tableA
     LEFT JOIN tableB
         ON table1.column1 = table2.column1;

答案 2 :(得分:0)

以下查询在 MySQL 中正常运行,请尝试一下:

update TableA as a inner join TableB as b on a.Column1=b.Column1 
set a.Column2 = b.Column2 , a.Column3=b.Column3 
where a.Column1=b.Column1;

对于 Oracle ,请使用以下内容:

update TableA 
set TableA.Column2 = 
(select TableB.Column2 from TableB where TableA.Column1=TableB.Column1), 
TableA.Column3 =
(select TableB.Column3 from TableB where TableA.Column1=TableB.Column1);

答案 3 :(得分:0)

MERGE INTO TableA
USING (SELECT Column1, COlumn2, Column3
   FROM   TableB) Q
ON (TableA.Column1=TableB.Column1)
WHEN MATCHED THEN UPDATE SET TableA.Column2=Q.Column2
                           , TableA.Column3=Q.Column3;

这在Oracle中运行良好。您还可以插入表A中没有添加

的记录
 WHEN NOT MATCHED THEN INSERT (Column1, Column2, Column3) 
              VALUES (Q.Column1, Q.Column2, Q.Column3)