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

相关推荐
阿波罗尼亚1 小时前
数据库序列(Sequence)
数据库
Junsir大斗师1 小时前
Nginx服务器代理Postgresql-16后端数据库
数据库·nginx
Je1lyfish1 小时前
CMU15-445 (2025 Fall/2026 Spring) Project#3 - QueryExecution
linux·c语言·开发语言·数据结构·数据库·c++·算法
m0_596749093 小时前
如何防止SQL拼接漏洞_使用PDO对象实现安全的SQL交互
jvm·数据库·python
老纪的技术唠嗑局4 小时前
深度解析 LLM Wiki / Obsidian-Wiki / GBrain:Agent 时代知识的“自组织”与“自进化”
大数据·数据库·人工智能·算法
2301_795099746 小时前
golang如何在Gin中自定义验证器_golang Gin自定义验证器实现方法
jvm·数据库·python
2301_766283446 小时前
如何在MongoDB GridFS中进行按文件大小(length)范围的查询
jvm·数据库·python
布吉岛的石头6 小时前
分库分表实战:Sharding-JDBC 快速落地
分布式·mysql
冬天vs不冷7 小时前
面试必知必会(13):MySQL锁机制
mysql·面试·职场和发展
冬天vs不冷7 小时前
面试必知必会(14):MySQL执行计划与SQL优化
sql·mysql·面试