假设我有两个包含以下数据的表:
A1
| c1 | c2 |
| a | b |
A2
| c1 | c2 |
| c | d |
我想运行一个select返回两个表的数据,其中a1数据高于a2数据:
A1 U A2
| c1 | c2 |
| a | b |
| c | d |
所以在Hive里我可以做一些类似的事情:
SELECT * FROM A1
UNION ALL
SELECT * FROM A2
但这并不能产生正确的结果。我怎样才能执行工会的命令呢?或者是另一种产生这种输出的解决方案?
3条答案
按热度按时间bkhjykvo1#
在您的配置单元输出中有一个额外的列会扰乱您的工作流程吗?如果没有,您可以使用:
jutyujz02#
如果没有命令,它会给出任意的结果,它不能保证每次都有相同的结果。我建议附加order by sort\u char子句,以便每次都获得相同的结果。
查询:选择sort\u char,c1,c2 from(选择'1'作为sort\u char,c1,c2 from tbl1 union all选择'2'作为sort\u char,c1,c2 from tbl2)按顺序排序\u char;
yqhsw0fo3#
嘿,杰森,你的解决方案也适用于我的查询。。我也试过做同样的事。。在这里,我在您的查询中添加了union all。。这对我很有效。。感谢您在表中再添加一列。
选择sort\u char,c1,c2 from(选择'1'作为sort\u char,c1,c2 from tbl1 union all选择'2'作为sort\u char,c1,c2 from tbl2)a;
没有添加新字段,下面的查询也适用于我。。
选择c1,c2 from(选择c1,c2 from tbl1 union all选择c1,c2 from tbl2)tbl3;