详细聊聊关于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 相关文章推荐
如何使用Maxwell实时同步mysql数据
Apr 08 MySQL
MySQL查询学习之基础查询操作
May 08 MySQL
MySQL Threads_running飙升与慢查询的相关问题解决
May 08 MySQL
MySql 8.0及对应驱动包匹配的注意点说明
Jun 23 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
Mar 03 MySQL
MySQL分区表管理命令汇总
Mar 21 MySQL
mysql中如何用命令创建联合唯一索引
Apr 20 MySQL
MySQL的存储过程和相关函数
Apr 26 MySQL
Mysql开启外网访问
May 15 MySQL
MySQL 语句执行顺序举例解析
Jun 05 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 MySQL
mysql事务对效率的影响分析总结
Oct 24 #MySQL
mysql事务隔离级别详情
mysql主从复制的实现步骤
记一次Mysql不走日期字段索引的原因小结
Oct 24 #MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 #MySQL
MySQL七种JOIN类型小结
MySQL中的引号和反引号的区别与用法详解
You might like
session 的生命周期是多长
2006/10/09 PHP
php5.5新数组函数array_column使用
2013/07/08 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
十分钟搞定pandas(入门教程)
2019/06/21 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
对Django url的几种使用方式详解
2019/08/06 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
python开发一款翻译工具
2020/10/10 Python
python Tornado框架的使用示例
2020/10/19 Python
程序员机试试题汇总
2012/03/07 面试题
美术专业个人自我评价
2014/01/18 职场文书
学生会主席演讲稿
2014/04/25 职场文书
期末评语大全
2014/05/04 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
争先创优个人总结
2015/03/04 职场文书
罗马假日观后感
2015/06/08 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS