2012-12-31 224 views
9

我有TABLE_A:HiveQL UNION ALL

id var1 var2 
1 a b 
2 c d 

表-B:

id var1 var2 
3 e f 
4 g h 

我要的是表,合并:

id var1 var2 
1 a b 
2 c d 
3 e f 
4 g h 

这是我.hql:

CREATE TABLE combined AS 
SELECT all.id, all.var1, all.var2 
FROM (
    SELECT a.id, a.var1, a.var2 
    FROM table_A a 
    UNION ALL 
    SELECT b.id, b.var1, b.var2 
    from table_B b 
) all; 

我直接从编程蜂巢的第112页由Edward Capriolo等编码。

我得到的,不管是什么上述表面上是合理的变化,我尝试错误,是“cannot recognize input near '.' 'id' ',' in select expression.

我使用已经尝试“为”表名和别名之间,星号,因为我想要的一切来自两个表格。同样的错误。我试过其他的东西,并得到了其他的错误......我想要做的是UNION两张桌子。 (我试过UNION而不是UNION ALL - 同样的错误)。

回答

10

只需用另一个词替换全部。它似乎是一个保留的关键字。例如:

CREATE TABLE combined AS 
SELECT unioned.id, unioned.var1, unioned.var2 
FROM (
    SELECT a.id, a.var1, a.var2 
    FROM table_A a 
    UNION ALL 
    SELECT b.id, b.var1, b.var2 
    from table_B b 
) unioned; 
0

我有类似的查询工作。只是改变表名和列名。尝试这个。希望这可以帮助你。

create table new_table as 
select 
distinct 
id, name 
FROM 
table1 
union all 
select 
distinct 
id,name 
from 
table2 
;