MySQL-连接查询-自连接
自连接的基本查询语法:
1 | SELECT 字段列表 FROM 表A 别名A ,表A 别名B WHERE 条件....; |
自连接查询语法:
1 | SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件....; |
自连接查询,可以是内连接查询,也可以是外连接查询。
示例:
自连接
– 1. 查询员工 及其 所属领导的名字
1 | -- 只用到1张表 emp , 我们把它看成两张表,分别是 员工表emp 别名 a , 领导表 emp 别名 b |
– 2. 查询所有员工emp 及其领导的名字 emp, 如果员工没有领导,也需要查询出来
1 | -- 只用到1张表 emp , 我们把它看成两张表,分别是 员工表emp 别名 a , 领导表 emp 别名 b, 没有领导,也需要查询出来,用到外部左查询 |
左外连接(LEFT JOIN):左外连接是将左表中的所有记录与右表中匹配的记录进行连接,如果右表中没有匹配的记录,则结果中依然会显示左表中的记录,但右表的字段将会填充为 NULL
MySQL-联合查询- union,union all
对于 union
查询, 就是把多次查询的结果合并起来,形成一个新的查询结果集。
1 | SELECT 字段列表 FROM 表A... |
对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
union all 会将全部的数据直接合并在一起;
union 会对合并之后的数据去除重复
示例
实现:emp表中 将底薪低于 5000 的员工, 和年龄大于50岁的员工全部查询出来。
第一种:union all 全部的数据直接合并在一起
1 | select * from emp where < 5000 |
第二种:union 去除重复
1 | select * from emp where < 5000 |