关联查询sql编写的思路,1,先确定所连接的表,2,再确定所要查询的字段,3,然后确定连接条件以及连接方式
常见的连接方式有以下几种:
1. 内连接查询 关键字(inner join) 指所有查询出的结果都是能够在连接的表中有对应记录的。
select e.empName,d.deptName from t_employee e INNER JOIN t_dept d ON e.dept = d.id;
2,左外连接查询 关键字是(left outer join或者left join) 是指以左边的表的数据为基准,去匹配右边的表的数据,如果匹配到就显示,匹配不到就显示为null
//在这里,t_employee就是左表,也就是基准表,用基准表的数据去匹配右表的数据,
所以左表的记录是全部会查询出来的,如果右表没有记录对应的话就显示null
SELECT e.empName,d.deptName from t_employee e LEFT OUTER JOIN t_dept d on d.id = e.dept;
3,右外连接查询 关键字是(right outer join或者right join) 是指以左边的表的数据为基准,去匹配右边的表的数据,如果匹配到就显示,匹配不到就显示为null
//在这里,t_employee就是右表,也就是基准表,用基准表的数据去匹配左表的数据,
所以左表的记录是全部会查询出来的,如果左表没有记录对应的话就显示null
SELECT e.empName,d.deptName from t_employee e RIGHT OUTER JOIN t_dept d on d.id = e.dept;
4,全外连接 把两张表的字段都查出来,没有对应的值就显示null,由于mysql是没有全外连接的(mysql中没有full outer join关键字),想要达到全外连接的效果,可以使用union关键字连接左外连接和右外连接
/
select e.empName,d.deptName
FROM t_employee e
left JOIN t_dept d
ON e.dept = d.id
UNION
select e.empName,d.deptName
FROM t_employee e
RIGHT JOIN t_dept d
ON e.dept = d.id;
5,自连接查询 就是当前表与自身的连接查询
自连接查询就是当前表与自身的连接查询,关键点在于虚拟化出一张表给一个别名
SELECT e.empName,b.empName
from t_employee e
LEFT JOIN t_employee b
ON e.bossId = b.id;
网友评论