详细聊聊关于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 相关文章推荐
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
Apr 05 MySQL
MySQL 常见存储引擎的优劣
Jun 02 MySQL
MySQL系列之十 MySQL事务隔离实现并发控制
Jul 02 MySQL
mysql备份策略的实现(全量备份+增量备份)
Jul 07 MySQL
浅谈MySQL函数
Oct 05 MySQL
关于k8s环境部署mysql主从的问题
Mar 13 MySQL
聊聊mysql都有哪几种分区方式
Apr 13 MySQL
SQL语句多表联合查询的方法示例
Apr 18 MySQL
在MySQL中你成功的避开了所有索引
Apr 20 MySQL
MYSQL事务的隔离级别与MVCC
May 25 MySQL
MySQL数据库之内置函数和自定义函数 function
Jun 16 MySQL
MySQL自定义函数及触发器
Aug 05 MySQL
mysql事务对效率的影响分析总结
Oct 24 #MySQL
mysql事务隔离级别详情
mysql主从复制的实现步骤
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 #MySQL
MySQL七种JOIN类型小结
MySQL中的引号和反引号的区别与用法详解
You might like
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
浅谈JS使用[ ]来访问对象属性
2016/09/21 Javascript
微信小程序 less文件编译成wxss文件实现办法
2016/12/05 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
Python用threading实现多线程详解
2017/02/03 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
详解python中的index函数用法
2019/08/06 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
财务主管的岗位职责
2013/12/30 职场文书
采购主管岗位职责
2014/02/01 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
信息工作经验交流材料
2014/05/28 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
党支部考察意见范文
2015/06/02 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
怎样写观后感
2015/06/19 职场文书