employees表:
department表:
select e.last_name,e.department_id,d.department_name
from employees e
left outer join departments d
on (e.department_id = d.department_id);
select e.last_name, d.department_name
from employees e, departments d
where e.department_id = d.department_id(+)左外連線
結果為:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄。
select e.last_name,e.department_id,d.department_name
from employees e
right outer join departments d
on (e.department_id = d.department_id);
select e.last_name, d.department_id,d.department_name
from employees e, departments d
where e.department_id(+) = d.department_id;右外連線
結果為:所有員工及對應部門的記錄,包括沒有任何員工的部門記錄。
總結:a
表right outer join b表
結果是:所有
b表記錄,及匹配的
a表記錄
,a表未匹配上的顯示
null
a(+)=b a
表left outer join b
a=b(+)
結果是:所有
a表記錄,及匹配的
b表記錄,
b表未匹配的顯示
null
經典總結:
有+號的表不全部顯示,對面的表全部顯示。
口訣:
右外連線+在左
左外連線+在右
有+不全顯
無+就全顯
Oracle左連線,右連線
1.內連線很簡單 select a.b.from a,b where a.id b.id select a.b.from a inner join b on a.id b.id 以上兩句是完全等價的 2.左外連線 select from emp a left join dept d on a.dep...
oracle中的左連線 右連線
對左連線 右連線的疑惑得到解決。在oracle pl sql中,左連線和右連線以如下方式來實現 檢視如下語句 select emp name,dept name form employee,department where employee.emp deptid department.deptid ...
oracle 左連線 右連線 全連線
select from tab1 left join tab2 on tab1.id tab2.id 左表全部展示 select from tab1 where tab1.id tab2.id 左表全部展示,放在右表,右表為匹配表,左表全展示 select from tab1 right join ...