mysql自关联查询语句_MySQL两张表联合查询SQL语句

mysql自关联查询语句_MySQL两张表联合查询SQL语句假设要设计两张表,一张省份表(provinces),一张城市表(citys) 省份表结构 id ptitle 城市表结构 id ctitle proid(表示城市所属的省,对应着省份表的id值) 观察

MySQL之自关联查询

假设要设计两张表,一张省份表(provinces),一张城市表(citys)

  • 省份表结构
    • id
    • ptitle
  • 城市表结构
    • id
    • ctitle
    • proid(表示城市所属的省,对应着省份表的id值)

观察两张表可以发现,城市表比省份表多一个字段proid,其它列的字段都是一样的。而且,存储的都是地区信息,而且每种信息的数据量有限,没必要增加一个新表,或者将来还要存储区、乡镇信息,都增加新表的开销太大。

所以定义新表chain,结构:id, name,pid

说明:因为省没有所属的省份,所以可以填写为null,城市所属的省份pid,填写省所对应的编号id

这就是自关联,表中的某一列,关联了这个表中的另外一列,但是它们的业务逻辑含义是不一样的,城市信息的pid引用的是省信息的id

在这个表中,结构不变,可以添加区县、乡镇街道、村社区等信息

准备数据:

1.首先先下载好数据库文件
2.cd:当前路径(文件所在的)
3.进入mysql,执行:use 目标数据库名
4.导入文件:source 数据库文件名

数据文件

链接:https://pan.baidu.com/s/1S5kMzw_nk1KpR75syOKIbg

提取码:5418

练习:

-- 查询全国有多少个省?
select * from china where pid is null;

-- 查询山东省有多少个市?
select city.* from china as city
inner join china as province
on city.pid=province.id
where province.name="山东省";

-- 查询济南市下面的区县
SELECT county.* FROM china AS county
INNER JOIN china AS city ON county.pid=city.id
WHERE city.name="济南市";

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5878.html

(0)
上一篇 2023-04-22
下一篇 2023-04-22

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注