#进阶9:联合查询
/*
union 联合 合并:将多条查询语句的结果合并成一个结果
语法:
查询语句1
union
查询语句2
union #可以继续union
...
应用场景:
要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时
特点:★
1、要求多条查询语句的查询列数是一致的!
2、要求多条查询语句的查询的每一列的类型和顺序最好一致
3、union关键字默认去重,如果使用union all 可以包含重复项 #两张表中有相同的行,即:(t_ca.id=t_ua.t_id且t_ca.cname=t_ua.tname ) 时,union默认去重
*/
#引入的案例:查询部门编号 > 90或邮箱包含a的员工信息
select department_id,employees.*
from employees
where department_id > 90 or email like '%a%'; #67行
select * from employees where email like '%a%'
union
select * from employees where department_id > 90; #结果相同,还是67行。相当于把大的条件拆分成多个。
好处:假如条件有多个,比如6,7个,这个时候容易乱。这时候就可以这样拆分
#案例:查询中国用户中男性的信息,以及外国用户中男性的用户信息
SELECT id,cname FROM t_ca WHERE csex='男' #联合查询的列数,必须相同。不同则报错:Error Code:The used SELECT statements have a different number of columns.
UNION ALL
SELECT t_id,tname FROM t_ua WHERE tGender='male'; #结果默认是第一条语句的字段名:(id,cname)