详细聊聊关于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获取所有分类的前N条记录
May 07 MySQL
SQL注入的实现以及防范示例详解
Jun 02 MySQL
MySQL系列之十二 备份与恢复
Jul 02 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 MySQL
利用JuiceFS使MySQL 备份验证性能提升 10 倍
Mar 17 MySQL
MySQL实战记录之如何快速定位慢SQL
Mar 23 MySQL
MySQL学习必备条件查询数据
Mar 25 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
Apr 02 MySQL
MySQL事务操作的四大特性以及并发事务问题
Apr 12 MySQL
MySQL优化之慢日志查询
Jun 10 MySQL
mysql通过group by分组取最大时间对应数据的两种有效方法
Sep 23 MySQL
mysql事务对效率的影响分析总结
Oct 24 #MySQL
mysql事务隔离级别详情
mysql主从复制的实现步骤
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 #MySQL
MySQL七种JOIN类型小结
MySQL中的引号和反引号的区别与用法详解
You might like
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
php分页函数
2006/07/08 PHP
收集的php编写大型网站问题集
2007/03/06 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
javascript中闭包(Closure)详解
2016/01/06 Javascript
常用的javascript设计模式
2017/01/11 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
pandas 空的dataframe 插入列名的示例
2018/10/30 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
音乐专业应届生教师求职信
2013/11/04 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
经典团队口号大全
2014/06/21 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
党员自我评价2015
2015/03/03 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
2019入党申请书格式
2019/06/25 职场文书
Python语言规范之Pylint的详细用法
2021/06/24 Python
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android