注意:外连接,既能查询出符合条件的记录,也能根据一方强行将另一方查询出来。
注意:在oracle中,将(+)出现在=号右边,称为左外连接;将(+)出现在=号左边,称为右外连接;左外或右外,本质上是一样的,只是(+)的位置不一样,且(+)只能出现一次,以上语法是oracle专用语法。
例1:按部门10,20,30,40号,统计各部门员工的人数,要求显示部门号、部门名、人数。
解一:使用左外连接:
select dept.deptno,dept.dname,count(emp.empno)
from dept,emp
where dept.deptno=emp.deptno(+)
group by dept.deptno,dept.dname;
解二:使用右外连接:
select dept.deptno,dept.dname,count(emp.empno)
from dept,emp
where emp.deptno(+)=dept.deptno
group by dept.deptno,dept.dname;
例2:
按部门10,20,30,40号,统计各部门员工的人数,要求显示部门号、部门名、人数,且按人数降序排列:
select dept.deptno,dept.dname,count(emp.empno)
from dept,emp
where dept.deptno=emp.deptno(+)
group by dept.deptno,dept.dname
order by count(emp.empno) desc;