合并两个具有相同和新列的表

时间:2016-05-09 15:13:55

标签: c# sql sql-server merge

我有两个表table1,列col1,col2,col3,col4,col8,第二个table2,列col1,col2,col3,col5,col6,col7。 我想将这些表合并到一个新表中,其中数据分别为col1,col2,col3,col4,col5,col6,col7,col8。

在SQL或C#中我有什么办法吗?

2 个答案:

答案 0 :(得分:2)

您可能想要一个视图 - 以下是您在大多数平台上制作视图的方法。

CREATE VIEW twotables AS
SELECT a.col1, a.col2, a.col3, a.col4, b.col5, b.col6, b.col7, a.col8 
FROM table1 a
JOIN table2 b ON a.col1=b.col1 and a.col2=b.col2 and a.col3=b.col3 and a.col4=b.col4

您可能希望也可能不希望联接中的这些列。

许多人在做这样的事情时遇到的另一个问题是他们在两个表中都有不同的col1,col2,col3和col4记录。然后你需要这样的事情:

CREATE VIEW twotables as
SELECT a.col1, a.col2, a.col3, a.col4, b.col5, b.col6, b.col7, a.col8 
FROM (select distinct col1, col2, col3, col4 from table1
      union 
      select distinct col1, col2, col3, col4 from table2
) as k
LEFT JOIN table1 a ON a.col1=k.col1 and a.col2=k.col2 and a.col3=k.col3 and a.col4=k.col4
LEFT JOIN table2 b ON b.col1=k.col1 and b.col2=k.col2 and b.col3=k.col3 and b.col4=k.col4

这里我们首先得到所有"键的列表"然后我们离开了加入两张桌子。

答案 1 :(得分:0)

如果您不想使用VIEW,则可以通过以下方式创建表格:

    WITH    Data
              AS ( SELECT   col1 ,
                            col2 ,
                            col3 ,
                            col4 ,
                            NULL AS col5 ,
                            NULL AS col6 ,
                            NULL AS col7 ,
                            col8
                   FROM     table1
                   UNION ALL
                   SELECT   col1 ,
                            col2 ,
                            col3 ,
                            NULL AS col4 ,
                            col5 ,
                            col6 ,
                            col7 ,
                            NULL AS col8
                   FROM     table2
                 )
        SELECT  *
        INTO    table3
        FROM    Data;