03-04-联合查询
联合查询
基本概念
联合查询是可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词
UNION
或UNION ALL
联合查询:将多个查询的结果合并到一起(纵向合并):字段数不变,多个查询的记录数合并
应用场景
-
将一张表中不同的结果(需要对应多条查询语句来实现),合并到一起展示数据
将男生身高升序排列,女生身高降序排列。
-
最常见:在数据量大的情况下,会对表进行分表操作,需要对每张表进行部分数据统计,使用联合查询来将数据存放到一起展示
QQ1表在线数据,QQ2表在线数据
基本语法
select语句 union [union选项] select语句;
union
选项:与select
选项基本一样
distinct
:去重,去掉完全重复的数据(默认的选项)
all
:保存所有的结果注意:
union
理论上只要保证字段数一样,不需要每次拿到的数据对应的字段类型一致。永远只保留第一个select
语句对应的字段名字
order by
的使用
-
在联合查询中,如果要使用
order by
,那么对应的select
语句要用括号括起来将男生身高升序排列,女生身高降序排列。
(select * from my_student where gender='男' order by stu_height asc) union (select * from my_student where gender='女' order by stu_height desc);
<font color="#f00" size=6>会发现排序没有起作用</font>
-
order by
在联合查询中若要生效,必须配合使用limit
:而limit
后面必须跟对应的限制数量(通常可以使用一个较大的值:大于对应表的记录数)将男生身高升序排列,女生身高降序排列。
(select * from my_student where gender='男' order by stu_height asc limit 10) union (select * from my_student where gender='女' order by stu_height desc limit 10);