详细聊聊关于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 相关文章推荐
详解GaussDB for MySQL性能优化
May 18 MySQL
详解MySQL数据库千万级数据查询和存储
May 18 MySQL
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
May 25 MySQL
Mysql中存储引擎的区别及比较
Jun 04 MySQL
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
Jun 18 MySQL
MySQL令人大跌眼镜的隐式转换
Aug 23 MySQL
MySQL修炼之联结与集合浅析
Oct 05 MySQL
一篇文章看懂MySQL主从复制与读写分离
Nov 07 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
Apr 02 MySQL
MySQL数据库如何查看表占用空间大小
Jun 10 MySQL
MySQL约束(创建表时的各种条件说明)
Jun 21 MySQL
SQL Server数据库的三种创建方法汇总
May 08 MySQL
mysql事务对效率的影响分析总结
Oct 24 #MySQL
mysql事务隔离级别详情
mysql主从复制的实现步骤
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 #MySQL
MySQL七种JOIN类型小结
MySQL中的引号和反引号的区别与用法详解
You might like
让PHP支持断点续传的源码
2010/05/16 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
js 火狐下取本地路径实现思路
2013/04/02 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
jquery自定义插件——window的实现【示例代码】
2016/05/06 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
图文详解WinPE下安装Python
2016/05/17 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
Python实现感知机(PLA)算法
2017/12/20 Python
python 格式化输出百分号的方法
2019/01/20 Python
python小程序实现刷票功能详解
2019/07/17 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
应届毕业生的自我鉴定
2013/11/13 职场文书
日语专业个人的求职信
2013/12/03 职场文书
皮肤科医师岗位职责
2013/12/04 职场文书
互联网创业计划书的书写步骤
2014/01/28 职场文书
优秀教师获奖感言
2014/01/31 职场文书
和解协议书
2014/04/16 职场文书
七个Python必备的GUI库
2021/04/27 Python