当前位置: 首页 > article >正文

MySQL union和union all


天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


玉阶生白露,夜久侵罗袜。
却下水晶帘,玲珑望秋月。
——《玉阶怨》


文章目录

  • union和union all
    • 1. 介绍
    • 2. 区别
    • 3. 用法示例
      • 3.1 建表
      • 3.2 查询
      • 3.3 联合查询
        • 3.3.1 union联合查询
        • 3.3.2 union all联合查询
      • 3.4 数量或顺序不同的联合查询
        • 3.4.1 字段数量不同的联合查询
        • 3.3.4 字段顺序不同的联合查询


union和union all

1. 介绍

在mysql中,想要将两个select查询语句的结果整合到一起显示,使用union或者union all进行联合显示

2. 区别

  • union
    是将两个结果集去重后显示
    先对结果进行排序,重复的记录会被删除(也就是将两个结果进行并集操作,默认排序)

  • union all
    是将两个结果集完整合并后显示,不会去重(也是并集操作,但不会排序,也不会删除重复的记录)

3. 用法示例

两条select语句查询的表字段数量必须一致,不然合并会出现错误
两条select语句查询的表字段顺序必须一致,否则会以union或union all前面的select语句的顺序为准,后面的select语句查询结果会贴在前面的查询结果后面

3.1 建表

创建表

create table tb_user (
    id int auto_increment,
    username varchar(50) default "" comment "用户名",
    age int default 18 comment "年龄",
    addr varchar(255) default "上海市" comment "地址",
    primary key(id)
);

添加测试数据(重名的李白,一个18一个20)

insert into tb_user (username, age, addr) values ("李白", 20, "长安"),("黄觉", 20, "叶城"),("张果", 18, "柳城"),("高斯", 18, "秦镇"),("李白", 18, "柳城"),("唐公", 30, "黑市");

在这里插入图片描述

3.2 查询

查询数据

select username from tb_user where age = 18;

在这里插入图片描述

3.3 联合查询

以下分别使用union和union all联合查询表中数据

3.3.1 union联合查询

使用union查询,查询结果会去重,以下实例中有两个同名李白一个18一个20,这里结果只显示了一个李白

select username from tb_user where age = 18
union
select username from tb_user where age = 20;

在这里插入图片描述

或者

select * from (
    select username from tb_user where age = 18
    union
    select username from tb_user where age = 20
) AS t;

其中AS t 的含义就是将联合查询的结果作为一个表,不加则出现语法报错,t是别名,可自定义

3.3.2 union all联合查询

使用union all查询,查询结果不会去重,保留所有结果,两个同名李白都出现在了结果中

select username from tb_user where age = 18
union all
select username from tb_user where age = 20

在这里插入图片描述

或者

select * from (
    select username from tb_user where age = 18
    union all
    select username from tb_user where age = 20
) AS t;

其中AS t 的含义就是将联合查询的结果作为一个表,不加则出现语法报错,t是别名,可自定义

3.4 数量或顺序不同的联合查询

3.4.1 字段数量不同的联合查询

查询字段数量不同时的联合查询,这里都会报错

select username, addr from tb_user where age = 18
union
select username from tb_user where age = 20
select username, addr from tb_user where age = 18
union all
select username from tb_user where age = 20

在这里插入图片描述

3.3.4 字段顺序不同的联合查询

查询字段顺序不同时的联合查询

select username, addr from tb_user where age = 18
union
select addr, username from tb_user where age = 20

在这里插入图片描述

select username, addr from tb_user where age = 18
union all
select addr, username from tb_user where age = 20

在这里插入图片描述
总结
结果相同,列名都会以第一条查询语句的顺序排列,数据则按实际查询结果展示


感谢阅读,祝君暴富!


版权声明:

  • 作者:寒山李白
  • 博客地址:https://hanshan.blog.csdn.net/
  • 版权:本作品采用《创作共享许可证》进行许可,根据该许可授权的内容可在符合本许可证条款的前提下自由使用、、修改和创作衍生作品。

版权许可介绍:
本文采用CC BY-NC-SA许可证
此许可允许在使用者仅出于非商业目的以任何媒体或格式分发、重新混合、改编和构建材料,并且前提是注明创作者。如果您重新混合、改编或基于该材料进行构建,则必须按照相同的条款对修改后的材料进行许可。

更多信息请访问以下网址查看:
版权官网 https://creativecommons.org/licenses/by-nc-sa/4.0/
中文翻译 https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans



http://www.kler.cn/a/511103.html

相关文章:

  • 四、华为交换机 STP
  • 使用 Blazor 和 Elsa Workflows 作为引擎的工作流系统开发
  • 新星杯-ESP32智能硬件开发--ESP32的I/O组成-系统中断矩阵
  • 线上工单引发的思考:Spring Boot 中 @Autowired 与 @Resource 的区别
  • 双向耦合粒子追踪稳态求解器找到未定义的值?
  • DETR论文阅读
  • 算法随笔_12:最短无序子数组
  • 基于Spring Boot的车间调度管理系统
  • 前端TS 时间格式化函数
  • VSCode+EIDE 环境搭建
  • 仿 RabbitMQ 的消息队列1(实战项目)
  • HTML5 教程(下)
  • 第12章:Python TDD完善货币加法运算(一)
  • Linux操作系统的灵魂,深度解析MMU内存管理
  • 为AI聊天工具添加一个知识系统 之49 “‘之47’和蒙板有关的术语”的腾讯云 AI 代码助手答问(部分)
  • 【版图设计】2025年 最新 Cadence Virtuoso IC617 虚拟机环境配置全过程 集成电路版图设计环境配置
  • Math Reference Notes: 矩阵行变换与列变换
  • 【vLLM 学习】使用 ROCm 安装
  • STM32单片机芯片与内部76 Cortex-M3架构 内核概览
  • 如何爬取淘宝关键字接口
  • 傅里叶变换在语音识别中的关键作用
  • 实战经验:使用 Python 的 PyPDF 进行 PDF 操作
  • Python爬虫---中国大学MOOC爬取数据(文中有数据集)
  • 同城生鲜配送系统架构与功能分析
  • springboot学生成绩管理系统
  • 20250116联想笔记本电脑ThinkBook 16 G5+使用TF卡拷贝速度分析