详细聊聊关于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 20 MySQL
MySQL 重写查询语句的三种策略
May 10 MySQL
MySQL 四种连接和多表查询详解
Jul 16 MySQL
MySQL Shell import_table数据导入的实现
Aug 07 MySQL
MySQL中CURRENT_TIMESTAMP的使用方式
Nov 27 MySQL
mysql下的max_allowed_packet参数设置详解
Feb 12 MySQL
实战 快速定位MySQL的慢SQL
Mar 22 MySQL
Nebula Graph解决风控业务实践
Mar 31 MySQL
Innodb存储引擎中的后台线程详解
Apr 03 MySQL
MySQL数据库安装方法与图形化管理工具介绍
May 30 MySQL
MySQL添加索引特点及优化问题
Jul 23 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依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
php解决约瑟夫环算法实例分析
2019/09/30 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
关于文本限制字数的js代码
2007/04/02 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
介绍Python中内置的itertools模块
2015/04/29 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
python 怎样进行内存管理
2020/11/10 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
四方通行旅游网:台湾订房、出国旅游
2017/09/20 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
咖啡馆创业计划书
2014/01/26 职场文书
公司门卫岗位职责
2014/03/15 职场文书
婚前协议书范本
2014/04/15 职场文书
竞选生活委员演讲稿
2014/04/28 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
js不常见操作运算符总结
2021/11/20 Javascript
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技