详细聊聊关于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 22 MySQL
MySQL如何构建数据表索引
May 13 MySQL
MySQL时间盲注的五种延时方法实现
May 18 MySQL
MySQL 视图(View)原理解析
May 19 MySQL
MySQL 不等于的三种使用及区别
Jun 03 MySQL
MySQL的全局锁和表级锁的具体使用
Aug 23 MySQL
浅谈MySQL表空间回收的正确姿势
Oct 05 MySQL
一篇文章看懂MySQL主从复制与读写分离
Nov 07 MySQL
教你如何让spark sql写mysql的时候支持update操作
Feb 15 MySQL
mysql的Buffer Pool存储及原理
Apr 02 MySQL
mysql sock 文件解析及作用讲解
Jul 15 MySQL
MySQL常用慢查询分析工具详解
Aug 14 MySQL
mysql事务对效率的影响分析总结
Oct 24 #MySQL
mysql事务隔离级别详情
mysql主从复制的实现步骤
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 #MySQL
MySQL七种JOIN类型小结
MySQL中的引号和反引号的区别与用法详解
You might like
PHP JSON 数据解析代码
2010/05/26 PHP
PHP APC缓存配置、使用详解
2014/03/06 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
来自chinaz的ajax获取评论代码
2008/05/03 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
Python实现的一个找零钱的小程序代码分享
2014/08/25 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
浅析Python中的for 循环
2016/06/09 Python
Python实现选择排序
2017/06/04 Python
Python线性回归实战分析
2018/02/01 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
三星美国官网:Samsung美国
2017/02/06 全球购物
房地产营销策划方案
2014/02/08 职场文书
电力安全事故反思
2014/04/27 职场文书
2014年教务处工作总结
2014/12/03 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers