解决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()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容