详细聊聊关于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数据库并展示在前端页面的实现代码
May 02 MySQL
MySQL中in和exists区别详解
Jun 03 MySQL
分析mysql中一条SQL查询语句是如何执行的
Jun 21 MySQL
MySQL开启事务的方式
Jun 26 MySQL
MySQL的Query Cache图文详解
Jul 01 MySQL
ORM模型框架操作mysql数据库的方法
Jul 25 MySQL
sql注入教程之类型以及提交注入
Aug 02 MySQL
SQL IDENTITY_INSERT作用案例详解
Aug 23 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
mysql 生成连续日期及变量赋值
Mar 20 MySQL
解决Mysql中的innoDB幻读问题
Apr 29 MySQL
MySql数据库触发器使用教程
Jun 01 MySQL
mysql事务对效率的影响分析总结
Oct 24 #MySQL
mysql事务隔离级别详情
mysql主从复制的实现步骤
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 #MySQL
MySQL七种JOIN类型小结
MySQL中的引号和反引号的区别与用法详解
You might like
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
php算法实例分享
2015/07/14 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
Python第三方库的安装方法总结
2016/06/06 Python
Python加载带有注释的Json文件实例
2018/05/23 Python
python获取txt文件词向量过程详解
2019/07/05 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
代办委托书怎样写
2014/04/08 职场文书
作风建设演讲稿
2014/05/23 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
创业计划书之干洗店
2019/09/10 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server