我有两个表table1,列col1,col2,col3,col4,col8,第二个table2,列col1,col2,col3,col5,col6,col7。 我想将这些表合并到一个新表中,其中数据分别为col1,col2,col3,col4,col5,col6,col7,col8。
在SQL或C#中我有什么办法吗?
答案 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;