详细聊聊关于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创建高性能索引的全步骤
May 02 MySQL
MySQL 逻辑备份与恢复测试的相关总结
May 14 MySQL
超详细教你怎么升级Mysql的版本
May 19 MySQL
MYSQL(电话号码,身份证)数据脱敏的实现
May 28 MySQL
MySQL令人大跌眼镜的隐式转换
Aug 23 MySQL
mysql中varchar类型的日期进行比较、排序等操作的实现
Nov 17 MySQL
MySQL数据库⾼可⽤HA实现小结
Jan 22 MySQL
MySQL 开窗函数
Feb 15 MySQL
一文了解MySQL二级索引的查询过程
Feb 24 MySQL
MySQL之MyISAM存储引擎的非聚簇索引详解
Mar 03 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
MySQL中EXPLAIN语句及用法
May 20 MySQL
mysql事务对效率的影响分析总结
Oct 24 #MySQL
mysql事务隔离级别详情
mysql主从复制的实现步骤
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 #MySQL
MySQL七种JOIN类型小结
MySQL中的引号和反引号的区别与用法详解
You might like
PHP生成带有雪花背景的验证码
2006/10/09 PHP
PHP 基本语法格式
2009/12/15 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
通过JavaScript控制字体大小的代码
2011/10/04 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
javascript的delete运算符知识点总结
2019/11/19 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
玩转python爬虫之正则表达式
2016/02/17 Python
Python利用IPython提高开发效率
2016/08/10 Python
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
详解python持久化文件读写
2019/04/06 Python
python3字符串操作总结
2019/07/24 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
ubuntu上安装python的实例方法
2019/09/30 Python
opencv python在视屏上截图功能的实现
2020/03/05 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
餐饮业会计岗位职责
2013/12/19 职场文书
养殖行业的创业计划书
2014/01/05 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
优质服务口号
2014/06/11 职场文书
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
社区文艺活动方案
2014/08/19 职场文书