您的位置:首页 > 其它

hive中间接实现不等值连接<转>

2014-03-05 16:07 302 查看
由于hive中不支持不等值连接,给应用带来不便。

create tablelpx_test_a as

select id,class

from (

select 1 as id, 2 asclass from dual

union all

select 2 as id, 3 asclass from dual

union all

select 3 as id, 4 asclass from dual

union all

select 5 as id, 6 asclass from dual

) a;



create tablelpx_test_b as

select id,class

from (

select 1 as id, 3 asclass from dual

union all

select 2 as id, 3 asclass from dual

union all

select 3 as id, 3 asclass from dual

union all

select 5 as id, 6 asclass from dual

) a;





--oracle

SELECT a.*, b.id ASb_id, b.class AS b_class

FROM lpx_test_a a

LEFT OUTER JOIN lpx_test_b b

ON (a.id = b.id AND a.class < b.class);



--hive

SELECT a.*,

CASE WHEN a.class < b.class THEN b.idEND AS b_id,

CASE WHEN a.class < b.class THEN b.class END AS b_class

FROM lpx_test_a a

LEFT OUTER JOIN lpx_test_b b

ON (a.id = b.id);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: