欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > mysql复合查询 -- 合并查询(union,union all)

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

2024/10/25 8:28:01 来源:https://blog.csdn.net/m0_74206992/article/details/142470298  浏览:    关键词:mysql复合查询 -- 合并查询(union,union all)

目录

合并查询

介绍

表数据 

union

使用场景

​编辑

示例

union all


合并查询

介绍

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

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

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

  • 所以要保证列信息相同

表数据 

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


CREATE TABLE employees (empno INT PRIMARY KEY,ename VARCHAR(50),job VARCHAR(50),deptno INT
);
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语句连接:

  • select * from employees where job='MANAGER' or job='ANALYST' union select * from contractors where job='MANAGER' or job='ANALYST';

 

union all

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com