首页 > 解决方案 > 如何将三个最相似但又有些不同的表合并为一张表?

问题描述

我想知道将三个表合并到一个新表中的最简单方法是什么。这些表的字段名称大多相似,但一个表的字段比另外两个多 20 个,而更宽的表大约有 130 个字段。在字段名称匹配的地方,都完全相同。这三个表有大约 1M、1.5M 和 2M 条记录。

我可以做到这一点。

CREATE TABLE ALLMERGED AS(
    SELECT * FROM TABLE1 
    UNION
    SELECT * FROM TABLE2 
    UNION
    SELECT * FROM TABLE3) 

我只是想知道星字符是否可靠地以正确的顺序排列所有字段。这是最佳做法吗?

我在 SQL Server Azure 2019 上。

谢谢。

标签: sqlsql-server

解决方案


UNION 子句的第一条规则是列数必须相同。根据您的描述,列数不同,因此您的查询将失败。

为了创建一个新表,您需要明确提及列名,如下所示 -

       SELECT COL1, COL2, COL3 INTO ALLMERGED FROM TABLE1
       UNION ALL
       SELECT COL1, COL2, COL3 FROM TABLE2
       UNION ALL
       SELECT COL1, COL2, COL3 FROM TABLE3;

您还需要注意所有这些列的数据类型也必须相同。


推荐阅读