2012-12-31 9 views
9

Ich habe TABLE_A:HiveQL UNION ALL

id var1 var2 
1 a b 
2 c d 

Table_B:

id var1 var2 
3 e f 
4 g h 

Alles, was ich will Tabelle ist, kombiniert:

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

Das ist mein .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; 

Ich schreibe direkt von Seite 112 von Programming Hive von Edward Capriolo, et al.

Der Fehler, den ich bekommen, egal, was angeblich vernünftige Variation des obigen, dass ich versuche, ist „cannot recognize input near '.' 'id' ',' in select expression.

ich mit habe versucht, „wie“ zwischen dem Tabellennamen und dem Aliasnamen, da Sternchen will ich alles von beiden Tabellen. Derselbe Fehler. Ich habe andere Dinge ausprobiert und andere Fehler bekommen ... Alles, was ich tun möchte, ist UNION zwei Tabellen. (Ich habe UNION anstelle von UNION ALL versucht - gleicher Fehler).

Antwort

10

Ersetzen Sie einfach alle durch ein anderes Wort. Es scheint ein reserviertes Keyword zu sein. Zum Beispiel:

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

Ich habe ähnliche Abfrage funktioniert. Ändern Sie nur den Tabellennamen und die Spaltennamen. Versuche dies. Hoffe das hilft dir.

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