解决vlookup()

昨天写脚本的时候还碰到一个需要转换对的Excel操作是vlookup():
举例:需要将一个表里的city_id匹配出另一个表里的city_name


app表

city表

和群友讨论的结果说是有两种方法可以替代(注意是替代,不是等同):

  1. 这数据是我从数据库app表里取出来的,所以可以在取数的时候join city表来解决:
select app,cityid,city_name 
from app a join  city c 
on a.cityid = c.cityid
where ******

一般情况下,问题就这么 解决了,然而昨天却出现了问题,因为app表里的数据太多达到了3000W行,city表里有500行,这样就导致了这条sql在数据库里 进行了3000W*500=150亿次扫描(原因参考笛卡尔集),导致数据库持续报警了几个小时。
今天转换了一下思路,其实app表里的符合条件的数据只有4000行,所以将在app表里查出的结果当成新表再与city表进行join,这样只要扫描4000*500=200W次就行了:

select app,cityid,city_name 
from  city c 
join
 (select app,cityid from app where ******) b
on c.cityid =b.cityid

2.使用merge()

app.merge(right =city,how = 'left')
merge()

你可能感兴趣的:(解决vlookup())