合并具有不同列数的表

Posted

技术标签:

【中文标题】合并具有不同列数的表【英文标题】:Combine tables with different number of columns 【发布时间】:2019-10-23 19:26:17 【问题描述】:

我需要 UNION 两个表,它们的列基本相同,但一个表有几个额外的列。我知道您可以为这些附加列使用占位符执行 SELECT,但我正在处理大约 200 列,而更大的表有大约 30 个附加列。这使得键入每一列是不合理的。有没有办法在合并表的同时自动为较小的表中不存在的列设置 NULL 值?

【问题讨论】:

不。联合中的每个表必须具有相同数量的列。但是,如果您可以创建具有较少列的表,则不必命名列。只需在第二个查询中添加“null,null,null,null....”即可。 @SeanLange 我是否必须按照与较大表中的列相同的顺序添加空列? 是的。两个查询需要具有相同数量的列。第二个 select 语句中的列顺序定义了它将出现在第一个查询中的哪一列。 只需对系统表/视图使用查询即可获取所有列。 【参考方案1】:

简而言之,没有。 Unioning 结果集必须具有相同数量/数据类型的列。如果您想让剩余的集合填充为 null,最简单的方法是执行类似的操作-

select col1
, col2
, col3
, col4
from tbl1

union all

select null as col1
, null as col2
, null as col3
, null as col4
from tbl2

【讨论】:

您不必在第二个查询中命名列。当存在 UNION 或 UNION ALL 时,列名在第一个查询中定义。你可以给它们起任何你想要的或者根本不想要的别名,它对查询没有影响。 是的,它是可选的。为了清楚起见,我建议使用别名。

以上是关于合并具有不同列数的表的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 Spark 中使用 Dataframes(由 structtype 方法创建)合并具有不同列数的 2 个表?

在 Excel 查询编辑器中合并具有不同列数的 CSV 文件文件夹

构建具有不同列数的html表

连接具有不同列数的两个表

合并具有不同记录数的两个表

具有不同列数的数据表