如何将表与列表交叉连接?

时间:2014-01-29 16:10:00

标签: sql join hive

如果我有一个表mytable和一个列表

set vals = (1,2,3,4);

我希望将表与列表交叉连接(获取一个新表,其中包含4倍于原始表的行和一个额外的val列),我是否有比创建更好的选项an explicit temp table

我能做的是:

select a.*, b.val
from mytable a cross join
(select stack(4,1,2,3,4) as (val) from 
 (select * from mytable limit 1) z) b;

编辑:我的主要用例是将-hiveconf vals='4,1,2,3,4'传递给hive,并将stack(4,1,2,3,4)替换为上述代码中的stack(${hiveconf:vals})

2 个答案:

答案 0 :(得分:2)

我不知道这会有所帮助。

SELECT *
from mytable cross join
(select 1 as p
union 
select 2 
union 
select 3
union 
select 4) as x

答案 1 :(得分:1)

select a.*, b.val
from a lateral view explode(array(1,2,3,4)) b as val;
相关问题