对蜂巢非常新,对它有非常基本的想法,所以请原谅我,如果它很傻:
下面的数据只是我想要做的一个例子,实际数据非常庞大。
我有两张桌子:
表A
id1名称来源
101 aa SAP
102 bb SAP
103 cc SAP
表B
id2名称来源
106 zz SAP
107 yy SAP
108 xx SAP
我需要使用架构
创建另一个表C.id Name Strorage
包含表A和B中的所有ID和名称,另一列“Storage”必须使用“HDFS”进行硬编码
我需要输出:
id name Strorage
101 aa HDFS
102 bb HDFS
103 cc HDFS
106 zz HDFS
107 yy HDFS
108 xx HDFS
我尝试了很多查询,但其中1条如下:
insert into table c select (select * from (select id1 from A union select id2 from B)) as id, (select * from (select name from A union select name from B)) as name , 'HDFS' as Strorage;
但是它给出了错误“ParseException line 1:53无法识别表达式规范中'select'''''附近的输入”
我不确定我正在尝试的查询是否正确,请帮助我。
谢谢
答案 0 :(得分:0)
看起来像(第一个)语法问题在你的插入中,而不是联合查询。这样的事情应该有效:
insert into table c select id, name, 'HDFS' from (
select * from (select id1, name from A union select id2, name from B));
答案 1 :(得分:0)
以下是工作查询:
insert into table c select distinct * from (select id1, name, 'HDFS' storage from a union all select id1, name, 'HDFS' storage from b) c;
有些版本不支持union,只有union all模拟union你必须使用distinct。
当字段名称不同时,您必须尝试:
insert into table c select distinct * from (select id1, name, 'HDFS' storage from a union all select id2 as id1, name, 'HDFS' storage from b) c;