1、说明
背景:存在一张会员表(mc_profiles
),表中存储了服务店铺id(store_id
)和店铺类型(store_type
=1,2,3),如下:
id |
member_id |
store_id |
store_type |
1 |
661111 |
1001 |
1 |
1 |
662000 |
2002 |
2 |
1 |
663000 |
3001 |
3 |
- 当store_type=1时,店铺信息实际指代的店铺(bas_store)表
id |
store_name |
1001 |
上海店 |
1002 |
北京店 |
- 当store_type=2时,店铺信息实际指代的是运动城(bas_sports_city)表
id |
store_name |
2001 |
青海运动城 |
2002 |
天津运动城 |
- 当store_type=3时,店铺信息实际指代的是异业渠道(bas_extros)表
id |
store_name |
3001 |
四川异业渠道 |
3002 |
广西异业渠道 |
需求:查询出会员信息及其店铺信息(memberId,storeName,storeId
)。
2、实现方式
方式一: 使用left join 结合case when 判断直接取值
select mp.member_id ,mp.store_id,
case mp.store_type
when 1 then bs.store_name
when 2 then sc.store_name
when 3 then be.store_name end as 'store_name'
from mc_profiles mp
left join bas_store bs on bs.id=mp.store_id
left join bas_sports_city sc on sc.id=mp.store_id
left join bas_extros be.id=mp.store_id
网友评论