- A+
MySQL之union联合查询的实现!
UNION 的含义是“联合,并集,结合”,在MySQL中可以将多个查询语句的结果合并成一个结果集,在MySQL 不支持FULL OUTER JOIN 的情况下,弥补了“并集” 查询的短板。
联合查询:
关键字union,作用就是将多条查询语句的结果合并成一个结果集。
案例:(查询部门编号大于100或名字中含有a字符的员工信息)
select * from employees where department_id>100 or last_name like '%a%';
用联合查询演示:
select * from employees where department_id>100 union select * from employees where last_name like '%a%';
union是应用场景:
比如在我们有个数据库中的老师表和学生表,两者之间没有直接的关联关系,但是又有一些共通性,但是现在我们想要查询学校所有男老师和男学生的信息(学生和老师的编号,姓名,出现日期,性别),这个时候就是应用union的时候。
SELECT `tno` 编号,`tname`,`tsex`,`tbirthday` FROM `teachers` WHERE `tsex`='男' UNION SELECT `sno`,`sname`,`ssex`,`sbirthday` FROM `students` WHERE `ssex`='男';
联合查询的特点:
- 联合查询的两个子查询的查询字段个数要一致
- 要求联合查询的子查询的查询列表顺序要在内容上保持一致
- 使用union联合默认会自动去重,如果不想去重可以将union改为union all
联合查询的规则
联合查询是有一定使用规则的,如果不加注意,MySQL就有可能执行报错,或意义混乱
1、多条查询语句的查询列数必须保持一致,否则报错。
2、多条查询语句的列值类型和顺序最好保持一致。
3、UNION 关键字默认不查询重复记录,但只要有一个字段不一样就认为是两条记录。
规则一:查询列数必须保持一致
其实很好理解,如果要将两个结果集合并,那么就需要将列数统一,MySQL对此作了严格的限制,不会以 NULL 值显示没有查询该列的查询记录,这是为了保证数据的准确性,原因是 NULL 也是一种值。
SELECT emp_id 编号, emp_name 姓名, dept_id 所属部门或班级, manager_id FROM emp UNION SELECT stu_id 编号, stu_name 姓名, class_id 所属部门或班级 FROM student
规则二:列值类型和顺序最好保持一致
“最好” 的意思是 “我们可以不这样做,但皮一下并没有什么意义”。
比如,我们将stu_name 与 class_id 调换顺序:
SELECT emp_id 编号, emp_name 姓名, dept_id 所属部门或班级 FROM emp UNION SELECT stu_id 编号, class_id 姓名, stu_name 所属部门或班级 FROM student LIMIT 15
MySQL虽然不会报错,但结果已经不具有什么使用意义了。另外,列的别名其实并不需要完全统一,多条查询语句中如果出现不统一的列名,MySQL会默认使用第一条查询语句的列名。如:
SELECT emp_id 编号, emp_name 姓名, dept_id 所属部门或班级 FROM emp UNION SELECT stu_id, stu_name, class_id FROM student LIMIT 15
但为了保证可读性,建议为每条查询语句指定相同的列名,保持统一格式。
规则三:UNION 默认去重
UNION 关键字不会查询重复的记录,但重复的记录并不是简简单单的“看上去重复”或“主键重复”,记录中只要有一个字段不一致,UNION 就会老老实实的将他们都查询出来。
UNION 与 UNION ALL
UNION 关键字是去重的联合查询,如果非要将所有记录都查询出来,不忽略重复的记录,那么可以使用 UNION ALL ,对比来看一下:
SELECT * FROM emp UNION SELECT * FROM emp
UNION 的结果:
SELECT * FROM emp UNION ALL SELECT * FROM emp
UNION ALL 的结果:
到此这篇关于MySQL之union联合查询的实现的文章就介绍到这了。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需99元,即可下载本站文章涉及的文件和软件。
- 我的微信
-
- 我的知识星球
-