標籤:
表t_user1,t_user2,t_user3,各有id,name兩列
串連分為兩種:內串連與外串連。
A.內串連
內串連,即最常見的等值串連,例:
SELECT *
FROM t_user1,t_user2
WHERE t_user1.id = t_user2.id
結果
id |
name |
id |
name |
1 |
10A |
1 |
10B |
B.外串連
外串連分為左外串連,右外串連和全外串連。
1. 左外串連 left outer join 或者 left join
左外串連就是在等值串連的基礎上加上主表中的未匹配資料,例:
SELECT *
FROM t_user1
LEFT OUTER JOIN t_user2
ON t_user1.id = t_user2.id
Oracle 支援另一種寫法
SELECT *
FROM t_user1 ,t_user2
WHERE t_user1.id=t_user2.id(+)
結果:
id |
name |
id |
name |
1 |
10A |
1 |
10B |
2 |
20A |
|
|
三個表做左外串連
SELECT *
FROM t_user1
LEFT OUTER JOIN t_user2
ON t_user1.id=t_user2.id
LEFT OUTER JOIN t_user3
ON t_user1.id=t_user3.id
Oracle 支援的另外一種寫法
SELECT *
FROM t_user1,t_user2,t_user3
WHERE t_user1.id=t_user2.id(+)
AND t_user1.id=t_user3.id(+)
結果:
id |
name |
id |
name |
id |
name |
1 |
10A |
1 |
10B |
1 |
10C |
2 |
20A |
|
|
|
|
2. 右外串連 right outer join 或者 right join
右外串連是在等值串連的基礎上加上被串連表的不匹配資料
SELECT *
FROM t_user1
RIGHT OUTER JOIN t_user2
ON t_user1.id=t_user2.id
Oracle支援的另一種寫法
SELECT *
FROM t_user1,t_user2
WHERE t_user1.id(+)=t_user2.id
結果:
id |
name |
id |
name |
1 |
10A |
1 |
10B |
| |
|
3 |
30B |
3.全外串連 full outer join 或者 full join
全外串連是在等值串連的基礎上將左表和右表的未匹配資料都加上
SELECT *
FROM t_user1
FULL OUTER JOIN t_user2
ON t_user1.id=t_user2.id
全外串連的等價寫法,對同一表先做左串連,然後右串連
SELECT t_user1.*,t_user2.*
FROM t_user1
LEFT OUTER JOIN t_user2
ON t_user1.id = t_user2.id
UNION
SELECT t_user1.*,t_user2.*
FROM t_user2
LEFT OUTER JOIN t_user1
ON t_user1.id = t_user2.id
結果:
id |
name |
id |
name |
1 |
10A |
1 |
10B |
2 |
20A |
|
|
| |
|
3 |
30B |
就總結這麼多吧。後面遇到再接著寫。
oracle中的內串連和外串連區別