在hive union all上排序

xriantvc  于 2021-05-30  发布在  Hadoop
关注(0)|答案(3)|浏览(567)

假设我有两个包含以下数据的表:

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

但这并不能产生正确的结果。我怎样才能执行工会的命令呢?或者是另一种产生这种输出的解决方案?

bkhjykvo

bkhjykvo1#

在您的配置单元输出中有一个额外的列会扰乱您的工作流程吗?如果没有,您可以使用:

select sort_char, c1, c2 from (
  select '1' as sort_char, c1, c2 from A1
  union
  select '2' as sort_char, c1, c2 from A2
) A3 sort by sort_char
jutyujz0

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;

yqhsw0fo

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;

相关问题