详细聊聊关于Mysql联合查询的那些事儿


Posted in MySQL onOctober 24, 2021

联合查询之union

union可以合并两个以上 select语句查询出来的表,并消除表中的重复行。

其中,select语句需要拥有相同数量和相同数据类型的列。

1. 查询中国各省的ID以及省份名称

select ProID,ProName from T_Province

2. 湖南省所有地级市ID、名字

select CityID,CityName from T_City
where ProID = (
    select ProID from T_Province where ProName="湖南省"
);

3. 用union将他们合并

select ProID,ProName from T_Province
union
select CityID,CityName from T_City
where ProID = (
    select ProID from T_Province where ProName="湖南省"
);

这样就得到两个查询结果的并集了。

UNION 合并后的集合中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

联合查询之union all

select ProID,ProName from T_Province
union all
select CityID,CityName from T_City
where ProID = (
    select ProID from T_Province where ProName="湖南省"
);

当使用union all,不会消除重复行。

联合查询之inner join

1. 查询湖北省有多少地级市

不用联合查询:

select count(CityID) from T_City
where ProID = (select ProID from T_Province where ProName="湖北省")

通过ProID将两张表连接在一起

select ProName,CityName from(
    T_City join T_Province
    on T_City.ProID = T_Province.ProID
)
where ProName="湖北省"

2. 统计各省地级市的数量,输出省名、地级市数量

select T_City.ProID,ProName,count(CityID) as cc from(
    T_City join T_Province
    on T_City.ProID = T_Province.ProID
)
group by T_City.ProID
order by cc desc;

什么的select语句中要输出的ProID应该是T_City和T_Province中的一个,不然就会报错。

两个表之间需要有共同的(列名不一定相同)“语言”才能join。

可以给表起个别名,将T_City表的别名设为tc,将T_Province的别名设为tp。

select tc.ProID,ProName,count(CityID) as cc from(
    T_City tc join T_Province tp
    on T_City.ProID = T_Province.ProID
)
group by tc.ProID
order by cc desc;

3. 查询拥有20个以上区县的城市,输出城市名,区县数量

select CityName,count(DisName) disCount from (
    T_City tc join T_District td
    on tc.CityID = td.CityID
)
group by CityName
having disCount > 20;

联合查询之三表联合

1. 区县最多的3个城市是哪个省的哪个市,查询结果包括省名,市名,区县数量

select tp.ProName,tcd.CityName,tcd.ci from
(
select ProID,CityName,count(ID) ci from(T_City tc join T_District td on tc.CityID = td.CityID) 
    
group by tc.CityID
order by ci desc
limit 3
)tcd
join T_Province tp on tcd.ProID = tp.ProID;

联合查询之left join&right join

内连接是基于左右两表公共的部分

左连接是基于左右两表公共的部分加上左表特有的部分

右连接是基于左右两表公共的部分加上右表特有的部分

查询所有省份和它的城市信息

select * from(
T_Province tp join T_City tc
on tp.ProID = tc.ProID
);

查询所有省份和它的城市信息和没有城市的省份信息

select * from(
T_Province tp left join T_City tc
on tp.ProID = tc.ProID
);

查询所有省份和它的城市信息和没有省份的城市信息

select * from(
T_Province tp right join T_City tc
on tp.ProID = tc.ProID
);

总结

到此这篇关于Mysql联合查询的文章就介绍到这了,更多相关Mysql联合查询内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL入门命令之函数-单行函数-流程控制函数
Apr 05 MySQL
MySQL表的增删改查(基础)
Apr 05 MySQL
Mysql 性能监控及调优
Apr 06 MySQL
MySql新手入门的基本操作汇总
May 13 MySQL
解决Navicat for Mysql连接报错1251的问题(连接失败)
May 27 MySQL
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
Jun 26 MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 MySQL
MySQL连接控制插件介绍
Sep 25 MySQL
Mysql binlog日志文件过大的解决
Oct 05 MySQL
聊聊mysql都有哪几种分区方式
Apr 13 MySQL
MySQL视图概念以及相关应用
Apr 19 MySQL
mysql事务对效率的影响分析总结
Oct 24 #MySQL
mysql事务隔离级别详情
mysql主从复制的实现步骤
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 #MySQL
MySQL七种JOIN类型小结
MySQL中的引号和反引号的区别与用法详解
You might like
php 中include()与require()的对比
2006/10/09 PHP
php include和require的区别深入解析
2013/06/17 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
javascript基本语法分析说明
2008/06/15 Javascript
一些技巧性实用js代码小结
2009/10/14 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
PyCharm无法引用自身项目解决方式
2020/02/12 Python
孕妇装中的著名品牌:Isabella Oliver(伊莎贝拉·奥利弗)
2016/10/31 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
资源环境与城市管理专业推荐信
2013/11/30 职场文书
工作表现评语
2014/01/19 职场文书
小学生操行评语大全
2014/04/22 职场文书
小班评语大全
2014/05/04 职场文书
北京奥运会主题口号
2014/06/13 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
详解Go与PHP的语法对比
2021/05/29 PHP
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS