√ 1.含义
uinon 联合 合并:将多条查询语句的结果合并成一个结果
√ 2.练习
案例一:查询部门编号>90 或者邮箱包含e的员工信息
mysql> select * from employees where email like '%a%'
-> union
-> select * from employees where department_id >90;
+-------------+-------------+------------+----------+--------------------+------------+----------+----------------+------------+---------------+---------------------+
| employee_id | first_name | last_name | email | phone_number | job_id | salary | commission_pct | manager_id | department_id | hiredate |
+-------------+-------------+------------+----------+--------------------+------------+----------+----------------+------------+---------------+---------------------+
| 101 | Neena | Kochhar | NKOCHHAR | 515.123.4568 | AD_VP | 17000.00 | NULL | 100 | 90 | 1992-04-03 00:00:00 |
| 102 | Lex | De Haan | LDEHAAN | 515.123.4569 | AD_VP | 17000.00 | NULL | 100 | 90 | 1992-04-03 00:00:00 |
| 103 | Alexander | Hunold | AHUNOLD | 590.423.4567 | IT_PROG | 9000.00 | NULL | 102 | 60 | 1992-04-03 00:00:00 |
| 105 | David | Austin | DAUSTIN | 590.423.4569 | IT_PROG | 4800.00 | NULL | 103 | 60 | 1998-03-03 00:00:00 |
| 106 | Valli | Pataballa | VPATABAL | 590.423.4560 | IT_PROG | 4800.00 | NULL | 103 |
...
...
67 rows in set (0.07 sec)
当然用简单的做法也可以实现啦~
mysql> select * from employees where email like '%a%' or department >90;
案例二:查询中国用户中男性的信息以及外国用户中的男性的信息。(这才是联合查询的优势啦~)
mysql> select id ,cname,csex from t_ca where csex =男‘
->union
->select t_id,tName,tGender from t_ua where tGender ='male';
不好意思,我偷了一下懒,这个表我就没去建立和添加数据了,自己脑补一下。
√3.应用场景
要查询的结果来自多个表,并且多个表没有直接的连接条件,但查询的信息一致时。
一致性:1.要求多条查询语句的查询列数是一致的!
2.要求多条查询语句的查询的每一列的类型和顺序一致。
3.uinon关键字默认去重,如果使用union all可以包括重复项。
注:这是本人的学习笔记及练习,如果有错误的地方望指出一起讨论,谢谢!