03-04-联合查询

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lucky9322/article/details/85774482

联合查询

基本概念

联合查询是可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词UNIONUNION ALL

联合查询:将多个查询的结果合并到一起(纵向合并):字段数不变,多个查询的记录数合并

应用场景

  1. 将一张表中不同的结果(需要对应多条查询语句来实现),合并到一起展示数据

    将男生身高升序排列,女生身高降序排列。

  2. 最常见:在数据量大的情况下,会对表进行分表操作,需要对每张表进行部分数据统计,使用联合查询来将数据存放到一起展示

    QQ1表在线数据,QQ2表在线数据

基本语法

select语句 union [union选项] select语句;

union选项:与select选项基本一样

  • distinct:去重,去掉完全重复的数据(默认的选项)

    在这里插入图片描述

  • all:保存所有的结果

在这里插入图片描述

注意:

union理论上只要保证字段数一样,不需要每次拿到的数据对应的字段类型一致。永远只保留第一个select语句对应的字段名字

在这里插入图片描述

order by的使用

  1. 在联合查询中,如果要使用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>
  1. 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);
    

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lucky9322/article/details/85774482