详细聊聊关于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 InnoDB存储引擎的内存管理
Apr 08 MySQL
MySQL数据迁移相关总结
Apr 29 MySQL
mysql如何配置白名单访问
Jun 30 MySQL
SQL IDENTITY_INSERT作用案例详解
Aug 23 MySQL
mysql的数据压缩性能对比详情
Nov 07 MySQL
mysql分组后合并显示一个字段的多条数据方式
Jan 22 MySQL
Mysql数据库表中为什么有索引却没有提高查询速度
Feb 24 MySQL
详解Mysql事务并发(脏读、不可重复读、幻读)
Apr 29 MySQL
MYSQL常用函数介绍
May 05 MySQL
MYSQL事务的隔离级别与MVCC
May 25 MySQL
MySQL安装失败的原因及解决步骤
Jun 14 MySQL
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
Sep 23 MySQL
mysql事务对效率的影响分析总结
Oct 24 #MySQL
mysql事务隔离级别详情
mysql主从复制的实现步骤
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 #MySQL
MySQL七种JOIN类型小结
MySQL中的引号和反引号的区别与用法详解
You might like
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
php中判断字符串是否全是中文或含有中文的实现代码
2011/09/16 PHP
php获取字段名示例分享
2014/03/03 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
python输出电脑上所有的串口名的方法
2019/07/02 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
Python同时迭代多个序列的方法
2020/07/28 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
《广玉兰》教学反思
2014/04/14 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
公司租房协议书范本
2014/10/08 职场文书
民事赔偿协议书
2014/11/02 职场文书
2014年食品安全工作总结
2014/12/04 职场文书