【问题标题】:Combining two tables using UNION ALL使用 UNION ALL 组合两个表
【发布时间】:2012-10-14 14:03:07
【问题描述】:

我有两个具有相同字段的表。我希望将这些组合成一张大桌子。每个表的主键都是唯一的响应者 ID。

当我将这两个表与 UNION ALL 组合在一起时,一些数据被放入了错误的字段中!为什么是这样?它们位于原始表中的正确字段中。 UNION ALL 是正确的运算符吗?

【问题讨论】:

    标签: sql


    【解决方案1】:

    关于联合要记住的是,结果数据集的列名将由联合声明中的第一个表定义。

    此外,它们在表结构声明中的顺序将对此产生影响。

    如果表A定义为姓名、地址、电子邮件,而表B定义为姓名、电子邮件、地址

    select * from tableA
    union all
    select * from tableB
    

    将 tableB.Email 放在别名为“地址”的列中以更正此问题,您必须在 select 语句中定义列:

    select Name, Email, Address from tableA
    union all
    select Name, Email Address from tableB
    

    【讨论】:

    • 我想你说过我必须小心并确保每个字段都与正确的字段配对。那是对的吗? (我刚刚发现如何在 Access 中执行此操作。:) 顺便说一下,UNION ALL 与追加有何不同?
    • Access 中的一个 APPEND 语句,将一条记录添加到表中。 UNION ALL 所做的是将两个表中的所有记录作为单个数据结果返回,并包括重复项。这与仅返回一组不同的结果数据的 UNION 相反。
    • 您可以使用 APPEND 或 UNION ALL 来组合表格,那么?
      那么 UNION 合并表并删除重复项?
    • 不完全是。 APPEND 将数据添加到现有表中。 UNION 和 UNION ALL 从多个 select 语句创建单个数据结果集。
    【解决方案2】:

    UNION ALL 应该是正确的操作,但是您是否在两个部分中都按名称明确列出了字段,或者您是否使用星号作为通配符?

    【讨论】:

    • 我使用星号作为通配符。我今天才知道我应该对每个字段进行配对而不是使用星号。 :)
    猜你喜欢
    • 1970-01-01
    • 2021-11-07
    • 2017-05-15
    • 2021-01-30
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多