我有三个桌子。每个表与其他两个表具有公共列,但某些属性有所不同。由于我对common属性感兴趣,因此我想提出一个请求以从所有三个表中获取数据。
我需要通过UNION从所有三个表中获取项目。 AWS Athena是否有可能?
例如:
table1 (att1, att2, att3)
table2 (att1, att2, att_3)
table3 (att1, att2, att3, att4)
目标:从表1,表2,表3中获取项目,而无需加入同一请求。
答案 0 :(得分:1)
这将返回三个表的列中的所有值(包括table3
的第四列。如果只需要att1, att2
,则只需省略其他列,并仅在SELECT
语句中键入这些列即可。< / p>
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
应用DISTINCT
则表示返回唯一值集。
如果您正在寻找一种从您提到的所有表中返回公用列(按名称)的解决方案,那么您可以选择以下选项:
答案 1 :(得分:0)
在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语句具有相同数量的列,并且具有相同的数据类型,并且顺序相同。