轉
簡介:
多表連接查詢通過表之間的關聯字段,一次查詢多表數據。
下面將依次介紹 多表連接中的如下方法:
1、from a,b
2、inner join
3、left outer join
4、right outer join
二、例子:
以下采用oracle的scott用戶中的兩張表dept和emp舉例,
兩個表的deptno字段關聯。
表結構如下:
(1)、dept(部門表)
(2)、emp(雇員表)
1、from 表1,表2
語法:select a.x,b.y from a,b where a.id=b.id;
實例:
返回所有滿足where條件的行
select a.empno as 員工編號, a.ename as 員工名稱, b.dname as 部門 from scott.emp a, scott.dept b where a.deptno = b.deptno;
結果:
2、inner join
語法:select a.x from a inner join b on a.id=b.id;
inner 可以省略.
實例:
select a.empno as 員工編號, a.ename as 員工名稱, b.dname as 部門 from scott.emp a join scott.dept b on a.deptno = b.deptno ;
結果同上。
3、left outer join
查詢結果除了返回包含連接條件的行,還包含左表(a)中不滿足連接條件的行,
其中不滿足連接條件的行中b表的字段值將被置為空。
語法:select a.x from a inner left outer join b on a.id=b.id;
outer 可以省略.
實例:
select a.empno as 員工編號, a.ename as 員工名稱, b.dname as 部門 from scott.emp a left outer join scott.dept b on a.deptno = b.deptno
結果:
當查詢中出現過濾條件時:
1)當連接條件后面有where條件時:
select a.empno as 員工編號, a.ename as 員工名稱, b.dname as 部門 from scott.emp a left outer join scott.dept b on a.deptno = b.deptno where b.dname like 'SALES'
解釋:先根據連接條件a.deptno = b.deptno查詢,再對查詢結果按過濾條件查詢。
結果:
2)當連接條件后面有and條件時:
select a.empno as 員工編號, a.ename as 員工名稱, b.dname as 部門 from scott.emp a left outer join scott.dept b on (a.deptno = b.deptno and b.dname like 'SALES')
解釋:先對b表按過濾條件查詢,再對結果執行左連接查詢。
結果:
4 、right outer join
查詢結果除了返回包含連接條件的行,還包含右表(b)中不滿足連接條件的行,
其中不滿足連接條件的行中a表的字段值將被置為空。
語法:select a.x from a inner right outer join b on a.id=b.id;
outer 可以省略.
實例和結果略。