两张表先各自左外连接,然后在相互左外连接查找省市县的数据(业务需求必须这样做,省市去的是第一张表,而市县取的是第二张表,两张表中间通过市的名字连接)...

本文介绍了两张关于地区数据表的左外连接操作,详细展示了如何通过SQL查询实现不同级别地区的关联,包括省、市、县等,并针对数据不完全对应的情况进行了处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

 

一,表一的数据

1.1,表的基础数据

注意这张表中市县的parentid都是河南省,所以区别不出来2.3级的关系,而code又没有具体的关联

1 SELECT * FROM t_zone_info t WHERE t.`parentId`='16' OR t.`id`='16';

 

1.2,表一左外连接

 1 SELECT 
 2   prov.NAME AS province,
 3   prov.CODE AS provinceCode,
 4   cti.NAME AS city,
 5   cti.CODE AS cityCode 
 6 FROM
 7   t_zone_info prov 
 8   LEFT JOIN t_zone_info cti 
 9     ON prov.id = cti.parentId 
10 WHERE prov.CODE = '410000' 
11 ORDER BY province DESC,
12   cityCode 

2,表二的数据结构

2.1,表的基础数据,这个表有明显的1,2,3级关系的,在parent_code中有明显的标记的,不想上一张表

1 SELECT * FROM t_unionpay_areacode t WHERE t.`name`LIKE "%林州%";

1 SELECT * FROM t_unionpay_areacode t WHERE t.`parent_code`= '4960';

1 SELECT * FROM t_unionpay_areacode t WHERE t.code= '4960';

1 SELECT * FROM t_unionpay_areacode t WHERE t.`parent_code`='4900';

2.2,表二的左外连接(只查市县的左外连接)

1 SELECT 
2   cou1.NAME AS city,
3   cou2.NAME AS country,
4   cou2.CODE AS countryCode 
5 FROM
6   t_unionpay_areacode cou1 
7   LEFT JOIN t_unionpay_areacode cou2 
8     ON cou2.parent_code = cou1.CODE 
9 WHERE cou1.NAME = '安阳市' ;

 

3,两张表在左外连接,通过市名称相同

3.1,连接语句

 

 1 SELECT 
 2   prov.NAME AS province,
 3   prov.CODE AS provinceCode,
 4   cti.NAME AS city,
 5   cti.CODE AS cityCode,
 6   country.country AS country,
 7   country.countryCode AS countryCode 
 8 FROM
 9   t_zone_info prov 
10   LEFT JOIN t_zone_info cti 
11     ON prov.id = cti.parentId 
12   LEFT JOIN 
13     (SELECT 
14       cou1.NAME AS city,
15       cou2.NAME AS country,
16       cou2.CODE AS countryCode 
17     FROM
18       t_unionpay_areacode cou1 
19       LEFT JOIN t_unionpay_areacode cou2 
20         ON cou2.parent_code = cou1.CODE) country 
21     ON country.city = cti.NAME 
22 WHERE prov.CODE = '410000' 
23 ORDER BY province DESC,
24   cityCode,
25   countryCode 

 

不相同的,或者说表一种的数据有,但是表二中没有的话则用null来显示。

 

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值