详细聊聊关于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
如何使用Maxwell实时同步mysql数据
Apr 08 MySQL
详解MySQL主从复制及读写分离
May 07 MySQL
MYSQL(电话号码,身份证)数据脱敏的实现
May 28 MySQL
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
Jun 18 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
Arthas排查Kubernetes中应用频繁挂掉重启异常
Feb 28 MySQL
利用JuiceFS使MySQL 备份验证性能提升 10 倍
Mar 17 MySQL
MySQL数据库查询进阶之多表查询详解
Apr 08 MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
Apr 18 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
mysql如何查询连续记录
May 11 MySQL
mysql事务对效率的影响分析总结
Oct 24 #MySQL
mysql事务隔离级别详情
mysql主从复制的实现步骤
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 #MySQL
MySQL七种JOIN类型小结
MySQL中的引号和反引号的区别与用法详解
You might like
PHP中include()与require()的区别说明
2010/03/10 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
php写入mysql中文乱码的实例解决方法
2019/09/17 PHP
js 事件小结 表格区别
2007/08/13 Javascript
jQuery function的正确书写方法
2013/08/02 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
谷歌浏览器调试JavaScript小技巧
2014/12/29 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
python变量不能以数字打头详解
2016/07/06 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
Django自定义列表 models字段显示方式
2020/04/03 Python
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
经典优秀个人求职信分享
2013/12/12 职场文书
2014村务公开实施方案
2014/02/25 职场文书
8和9的加减法教学反思
2014/05/01 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
Python中使用subprocess库创建附加进程
2021/05/11 Python