16

我有表_A:

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;

我直接从 Edward Capriolo 等人的 Programming Hive 第 112 页编写代码。

我得到的错误,无论我尝试上述的表面上合理的变化,是

cannot recognize input near '.' 'id' ',' in select expression.

我尝试AS在表名和别名之间使用星号,因为我想要两个表中的所有内容。同样的错误。我尝试了其他事情并得到了其他错误......我想要做的只是UNION两张桌子。(我试过UNION而不是UNION ALL- 同样的错误)。

4

3 回答 3

15

只需用另一个词替换所有内容。它似乎是一个保留关键字。例如:

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;
于 2012-12-31T13:52:49.203 回答
2

我有类似的查询工作。只需更改表名和列名。尝试这个。希望这对您有所帮助。

create table new_table as
select
distinct
id, name
FROM
table1
union all
select
distinct
id,name
from
table2 
;
于 2017-11-07T09:18:24.407 回答
1

试试这个,它对我有用。

CREATE TABLE combined AS
SELECT id, var1, var2
FROM (
  SELECT id, var1, var2  
  FROM table_A
  UNION ALL  
  SELECT id, var1, var2  
  from table_B
) a;
于 2019-08-14T17:54:50.230 回答