【问题标题】:Merging two tables which have same and new columns合并具有相同列和新列的两个表
【发布时间】:2016-09-04 07:11:48
【问题描述】:

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

有什么方法可以用 SQL 或 C# 做吗?

【问题讨论】:

  • 是的,假设 cols 1,2,3 总是彼此相等.. 你尝试了什么
  • 是的,它们是相等的,我尝试了一些查询,例如CREATE TABLE Test_table as SELECT col1, col2, col3, col4, col5 FROM table1 UNION SELECT col1, col2, col3, col5, col6, col7 FROM table2;
  • 然后展示你尝试了什么,你遇到了什么问题 - 这个网站不是为你做所有的工作
  • Union 不是你想要的。你需要加入。我们有加入的关键价值吗?我认为您不是在寻找笛卡尔连接。
  • 你可能想要一个视图

标签: c# sql sql-server merge


【解决方案1】:

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

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

这里我们首先获取所有“键”的列表,然后我们将连接到两个表。

【讨论】:

  • create table as .. select.. 在 sql server 中工作吗?
  • @vkp 阅读“创建视图”
  • @vkp 你期望“create table as .. select”做什么?我不认为他想要一个物化视图——这就是你的建议吗?
【解决方案2】:

如果您不想使用 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2014-09-28
    • 2017-06-24
    • 1970-01-01
    相关资源
    最近更新 更多