sql关联 on后面加条件

本文介绍了在Hive中处理SQL关联的两种特殊需求:一是根据`qq.level_rank`条件选择不同字段进行关联;二是处理关联条件中有NULL值的情况。在MySQL等数据库中可以使用CASE语句,但在Hive中需要采取其他策略,如使用NVL函数避免NULL值导致的无结果问题。
摘要由CSDN通过智能技术生成

记两则需求SQL关联注意事项

需求一: 两个表分条件选择join

两个表字段如下

表ci:

c_id level 1 level2 level3 level4 其他字段

表qq:

level_rank level_id 其他字段

两个表的关联条件是: qq.level_rank = 1 时, 用qq.level_id =ci. level1 ;qq.level_rank = 2 时, 用qq.level_id =ci. level2; qq.level_rank = 3 时, 用qq.level_id =ci. level3; qq.level_rank = 4 时, 用qq.level_id =ci. level4;

1.在 mysql gp gp impala 数据库中 可以如下形式join, 在on 后面写case 条件.

select *
from 
(select 111 as level_1 ,111 as level_2 ,111 as level_3,111 as level_4
union all select 122 as level_1 ,122 as level_2 ,122 as level_3,122 as level_4
union all select 333 as level_1 ,331 as level_2 ,333 as level_3,333 as level_4
union all select 111 as level_1 ,111 as level_2 ,111 as level_3,444 as level_4) ci
left join
(select 1 as level_rank,111 as level_id  
union all select 2 as level_rank ,222 as level_id 
union all select 3 as level_rank ,333 as level_id 
union all select 4 as level_rank ,44 as level_id) qq
on case qq.level_rank when 1 then qq.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值