Key_Value 形式 存储_5级省市城乡划分代码 (mysql 8.0 实例)
【摘要】 Key_Value 形式 存储_5级省市城乡划分代码
这个案列是很久以前 我面试一个家公司一个面试题 ,公司的老板是一个在 google 工作过的 工程师,后来回上海创业了,现在回想起来很有意思。
---
---
# 数据准备
我们 用2022年度全国统计用区划代码和城乡划分代码 (5级)做实例
[下载全国统计用区划代码和城乡划分代码]
先建表
CREATE TABLE `china_code` (
`chinacode` bigint DEFAULT NULL,
`value` varchar(100) DEFAULT NULL
) ENGINE=MyISAM ;
select * from china_code
# 一、举例导入数据
insert into china_code(chinacode,value) values
('310000000000','上海市'),
('310100000000','直辖区'),
('310112000000','闵行区'),
('310112102000','七宝镇'),
('310112102042','华林路第一居委会'),
('310104000000','徐汇区'),
('310104011000','田林街道'),
('310104011033','千鹤第五居委会'),
('110000000000','北京市'),
('110100000000','直辖区'),
('110105000000','朝阳区'),
('110105009000','亚运村街道'),
('110105009057','民族园社区居民委员会'),
('230000000000','黑龙江省'),
('231100000000','黑河市'),
('231124000000','孙吴县'),
('231124100000','孙吴镇'),
('231124100218','镇南村委会'),
('510000000000','四川省'),
('513200000000','阿坝藏族羌族自治州'),
('513201000000','马尔康市'),
('513201100000','马尔康镇'),
('513201100212','查米村村民委员会')
# 二 、用数学函数获取省和直辖市
以上2个函数都是余数函数
select * from china_code where chinacode%1000000000=0
select * from china_code where mod(chinacode,1000000000)=0
# 三、省,市,区,村,居委会(5级)
select a.chinacode,a.value,b.chinacode,b.value,c.chinacode,c.value,d.chinacode,d.value,e.chinacode,e.value from china_code a
left join china_code b on left(a.chinacode,2)=left(b.chinacode,2)
left join china_code c on left(b.chinacode,4)=left(c.chinacode,4)
left join china_code d on left(c.chinacode,6)=left(d.chinacode,6)
left join china_code e on left(d.chinacode,8)=left(e.chinacode,8)
where a.chinacode%1000000000=0
and b.chinacode%10000000=0 and b.chinacode%1000000000!=0
and c.chinacode%1000000=0 and c.chinacode%100000000!=0
and d.chinacode%1000=0 and d.chinacode%1000000!=0
and e.chinacode%1000!=0
# 总结
希望这个例子对大家有帮助 ,也许其他的场景也可以使用。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)