我在Hive数据库中有以下表格:
table1:
id t X
1 1 a
1 4 a
2 5 a
3 10 a
table2:
id t Y
1 3 b
2 6 b
2 8 b
3 15 b
我想将它们合并成一个像:
的表格id t Z
1 1 a
1 3 b
1 4 a
2 5 a
2 6 b
2 8 b
3 10 a
3 15 b
基本上我想做的是:
列id
上的联接(该部分很简单)
将列table1.t
和table2.t
合并到一个新列t
如果相应的Z
来自table1.X
,则变量t
等于table1.t
,table2.Y
来自table2.t
{1}}
按id
排序,然后按t
排序(不应该太难)
我不知道如何处理第2部分和第3部分。我尝试使用外连接
table1.id = table2.id and table1.t = table2.t
,但它不合并两列t
。
任何指针都会受到赞赏。谢谢!
答案 0 :(得分:1)
试试这个。它将在表3中插入来自其他2个表的所有值
INSERT INTO table3(t,Z) SELECT t,X FROM table1 UNION ALL SELECT t,Y FROM table2
答案 1 :(得分:1)
CREATE TABLE table3 as SELECT * FROM (SELECT id,t,X as Z FROM t3_1 UNION ALL SELECT id,t,Y as Z FROM t3_2) u1 order by id,t;
尽管并非总是需要,但使用联合查询的子查询有助于组织,此外,您可以在查询的其他部分引用联合中的字段(例如u1.id
)。
您需要第3列上的别名才能使模式匹配。如果源表名称不是列,则可以执行以下操作:
select * from (select id,t,'a' from t3_1 UNION ALL select id,t,'b' from t3_2) u1;