繁体   English   中英

亚马逊雅典娜-从多个表中选择而无需联接

[英]amazon athena - select from multiples tables without join

我有三张桌子。 每个表与其他两个表具有公共列,但某些属性有所不同。 因为我对common属性感兴趣,所以我想提出一个请求以从所有三个表中获取数据。

我需要从UNION的所有三个表中获取项目。 AWS Athena是否有可能?

例如:

table1 (att1, att2, att3)
table2 (att1, att2, att_3)
table3 (att1, att2, att3, att4)

目标:在不加入同一请求的情况下从table1,table2,table3获取项目。

这将在三个表(包括第四列的列返回所有值table3 。如果你只需要att1, att2只是省略了其他列,仅这些在输入SELECT语句。

SELECT att1, att2, att3, NULL as att4 FROM table1
UNION ALL
SELECT att1, att2, att_3, NULL FROM table2
UNION ALL
SELECT att1, att2, att3, att4 FROM table3

如果UNION ALL来自不同表,则UNION ALL将返回重复值,而UNION应用DISTINCT则意味着返回唯一值集。

如果您正在寻找一种解决方案来从您提到的所有表中返回公共列(按名称),那么您可以选择:

  1. 像上面一样做,这意味着要明确指定它
  2. 您将必须编写一个过程来执行动态语句,该过程将在给定表中寻找匹配的列

在AWS Athena中,您可以使用UNION运算符合并两个(或更多)单独查询表达式的结果。 例如:

SELECT att1, att2, att3 FROM table1
UNION
SELECT att1, att2, att3 FROM table2
UNION
SELECT att1, att2, att3 FROM table3

我假设UNION中的每个SELECT语句具有相同数量的列,这些列具有相同的数据类型,并且顺序相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM