mysql复合查询 -- 合并查询(union,union all)

目录

合并查询

介绍

表数据

union

使用场景

​编辑

示例

[union all](#union all)


合并查询

介绍

它不像笛卡尔积那种,将行信息做乘法

  • 合并只是单纯地合在一起
  • 求的是两个结果集的并集 ,并且会自动去掉并集中的重复行

注意,因为是求并集,会将两个结果进行拼接

  • 所以要保证列信息相同

表数据

两张表,某公司的正式员工表和承包商员工表(可能有员工拥有双重身份)

sql 复制代码
CREATE TABLE employees (
    empno INT PRIMARY KEY,
    ename VARCHAR(50),
    job VARCHAR(50),
    deptno INT
);
sql 复制代码
CREATE TABLE contractors (
    empno INT PRIMARY KEY,
    ename VARCHAR(50),
    job VARCHAR(50),
    deptno INT
);


INSERT INTO contractors (empno, ename, job, deptno) VALUES
(4, 'JOHN', 'MANAGER', 10),
(5, 'DAVIS', 'ANALYST', 20),
(2, 'SMITH', 'ANALYST', 20); 

union

用于合并两个或多个 SELECT 查询的结果。它会自动去除重复的行,只返回唯一的记录

使用场景

示例

获取所有的经理和分析师的姓名和职位,不论他们是正式员工还是承包商

  • 需要将两张表的数据汇总到一起,且不能有重复数据

需要我们使用union关键字将两个sql语句连接:

sql 复制代码
select * from employees where job='MANAGER' or job='ANALYST' union select * from contractors where job='MANAGER' or job='ANALYST';

union all

如果不想去重,在union后+all

相关推荐
码爸2 分钟前
kafka负载均衡迁移(通过kafka eagle)
数据库·分布式·kafka
小强签名设计31 分钟前
Debian安装mysql遇到的问题解决及yum源配置
mysql·adb·debian
这孩子叫逆1 小时前
3. 什么是连接池?为什么使用数据库连接池?
数据库·mysql
计算机学姐1 小时前
基于SpringBoot+Vue的在线问诊管理系统
java·vue.js·spring boot·后端·mysql·spring·mybatis
solihawk1 小时前
数据库主备副本物理复制和逻辑复制对比
网络·数据库·oracle
Data 3171 小时前
Hadoop三大组件之HDFS(一)
大数据·数据库·数据仓库·hadoop·hdfs·etl
蘑菇蘑菇不会开花~1 小时前
MySQL | 实战 | 4 种将数据同步到ES方案
数据库·mysql·elasticsearch
-心铭-2 小时前
有关在.Net Core中以TEXT类型将Json格式字段存到数据库的学习
数据库·学习·.netcore
说书客啊2 小时前
计算机毕业设计 | SSM 凌云招聘平台 求职问答审批系统(附源码)
java·spring boot·后端·mysql·毕业设计·ssm·课程设计
程序员大金2 小时前
基于SpringBoot+Vue+MySQL的旅游推荐管理系统
前端·vue.js·spring boot·后端·mysql·tomcat·旅游