Oracle 左外連線、右外連線、全外連線小總結
Oracle 左外連線、右外連線、全外連線小總結:
1.左外連線:
left outer join 或者 left join
左外連線就是在等值連線的基礎上加上主表中的未匹配資料,例:
SELECT *
FROM TESTA
LEFT OUTER JOIN TESTB
ON TESTA.A=TESTB.A
Oracle 支援另一種寫法
SELECT *
FROM TESTA,TESTB
WHERE TESTA.A=TESTB.A(+)
此sql獲取的結果集為:TESTA.a與TESTB.a相等的資料加上TESTA表中 TESTA.a與TESTB.a兩個欄位不匹配的資料;
用(+)來實現, 這個+號可以這樣來理解: + 表示補充,即哪個表有加號,這個表就是匹配表。
所以加號寫在右表,左表就是全部顯示,故是左連線。
2.右外連線:
right outer join 或者 right join
右外連線是在等值連線的基礎上加上被連線表的不匹配資料
SELECT *
FROM TESTA
RIGHT OUTER JOIN TESTB
ON TESTA.A=TESTB.A
Oracle支援的另一種寫法
SELECT *
FROM TESTA,TESTB
WHERE TESTA.A(+)=TESTB.A
此sql獲取的結果集為:TESTA.a與TESTB.a相等的資料加上TESTB表中 TESTA.a與TESTB.a兩個欄位不匹配的資料;
用(+)來實現, 這個+號可以這樣來理解: + 表示補充,即哪個表有加號,這個表就是匹配表。
所以加號寫在左表,右表就是全部顯示,故是右連線。
3.全外連線:
full outer join 或者 full join
全外連線是在等值連線的基礎上將左表和右表的未匹配資料都加上
SELECT *
FROM TESTA
FULL OUTER JOIN TESTB
ON TESTA.A=TESTB.A
全外連線的等價寫法,對同一表先做左連線,然後右連線
SELECT TESTA.*,TESTB.*
FROM TESTA
LEFT OUTER JOIN TESTB
ON TESTA.A=TESTB.A
UNION
SELECT TESTA.*,TESTB.*
FROM TESTB
LEFT OUTER JOIN TESTA
ON TESTA.A=TESTB.A
此sql獲取的結果集為:TESTA.a與TESTB.a相匹配的結果和TESTA.a與TESTB.a不匹配的結果
總結:
Oracle 外連線
(1)左外連線 (左邊的表不加限制)
(2)右外連線(右邊的表不加限制)
(3)全外連線(左右兩表都不加限制)
oracle中使用+注意事項:
對於外連線, 也可以使用“(+) ”來表示。 關於使用(+)的一些注意事項:
1.(+)運算子只能出現在where子句中,並且不能與outer join語法同時使用。
2. 當使用(+)運算子執行外連線時,如果在where子句中包含有多個條件,則必須在所有條件中都包含(+)運算子
3.(+)運算子只適用於列,而不能用在表示式上。
4.(+)運算子不能與or和in運算子一起使用。
5.(+)運算子只能用於實現左外連線和右外連線,而不能用於實現完全外連線。
6. (+)寫在左表,右表就全顯示,故是右連線;
7.(+)寫在右邊,左邊就全顯示,故是左連線;
1.左外連線:
left outer join 或者 left join
左外連線就是在等值連線的基礎上加上主表中的未匹配資料,例:
SELECT *
FROM TESTA
LEFT OUTER JOIN TESTB
ON TESTA.A=TESTB.A
Oracle 支援另一種寫法
SELECT *
FROM TESTA,TESTB
WHERE TESTA.A=TESTB.A(+)
此sql獲取的結果集為:TESTA.a與TESTB.a相等的資料加上TESTA表中 TESTA.a與TESTB.a兩個欄位不匹配的資料;
用(+)來實現, 這個+號可以這樣來理解: + 表示補充,即哪個表有加號,這個表就是匹配表。
所以加號寫在右表,左表就是全部顯示,故是左連線。
2.右外連線:
right outer join 或者 right join
右外連線是在等值連線的基礎上加上被連線表的不匹配資料
SELECT *
FROM TESTA
RIGHT OUTER JOIN TESTB
ON TESTA.A=TESTB.A
Oracle支援的另一種寫法
SELECT *
FROM TESTA,TESTB
WHERE TESTA.A(+)=TESTB.A
此sql獲取的結果集為:TESTA.a與TESTB.a相等的資料加上TESTB表中 TESTA.a與TESTB.a兩個欄位不匹配的資料;
用(+)來實現, 這個+號可以這樣來理解: + 表示補充,即哪個表有加號,這個表就是匹配表。
所以加號寫在左表,右表就是全部顯示,故是右連線。
3.全外連線:
full outer join 或者 full join
全外連線是在等值連線的基礎上將左表和右表的未匹配資料都加上
SELECT *
FROM TESTA
FULL OUTER JOIN TESTB
ON TESTA.A=TESTB.A
全外連線的等價寫法,對同一表先做左連線,然後右連線
SELECT TESTA.*,TESTB.*
FROM TESTA
LEFT OUTER JOIN TESTB
ON TESTA.A=TESTB.A
UNION
SELECT TESTA.*,TESTB.*
FROM TESTB
LEFT OUTER JOIN TESTA
ON TESTA.A=TESTB.A
此sql獲取的結果集為:TESTA.a與TESTB.a相匹配的結果和TESTA.a與TESTB.a不匹配的結果
總結:
Oracle 外連線
(1)左外連線 (左邊的表不加限制)
(2)右外連線(右邊的表不加限制)
(3)全外連線(左右兩表都不加限制)
oracle中使用+注意事項:
對於外連線, 也可以使用“(+) ”來表示。 關於使用(+)的一些注意事項:
1.(+)運算子只能出現在where子句中,並且不能與outer join語法同時使用。
2. 當使用(+)運算子執行外連線時,如果在where子句中包含有多個條件,則必須在所有條件中都包含(+)運算子
3.(+)運算子只適用於列,而不能用在表示式上。
4.(+)運算子不能與or和in運算子一起使用。
5.(+)運算子只能用於實現左外連線和右外連線,而不能用於實現完全外連線。
6. (+)寫在左表,右表就全顯示,故是右連線;
7.(+)寫在右邊,左邊就全顯示,故是左連線;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2123257/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle內連線、外連線、右外連線、全外連線小總結Oracle
- 【SQL】Oracle的內連線、左外連線、右外連線及全外連線SQLOracle
- Oracle左外連線、右外連線、完全外連線以及(+)號用法Oracle
- SQL的四種連線:內連線 左外連線 右外連線 全連線SQL
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- 深入理解SQL的四種連線-左外連線、右外連線、內連線、全連線SQL
- oracle sql內連線_左(右)連線_全外連線_幾種寫法OracleSQL
- 內聯,左外聯,右外聯,全連線,交叉連線 的區別
- 內連線、外連線總結
- mysql左外連線MySql
- sql和hql中join語句區別,以及hibernate中內連線,迫切內連線,左外連線,迫切左外連線,右外連線的區別(合集)...SQL
- Oracle左連線,右連線Oracle
- InfoSet中左外連線
- mysql 外連線總結MySql
- 左連線,右連線
- 例項解析外連線 內連線 自連線 全連線
- Oracle 內外連線 join 總結Oracle
- oracle外連線Oracle
- 內連線、左連線、右連線
- 內連線、外連線
- Oracle的左連線和右連線Oracle
- Oracle 表連線方式詳解(外連結、內連線、自連線)Oracle
- 左連線與右連線
- 左連線和右連線
- sql內連結,外連線SQL
- mysql 左連線,右連線,內連結,exists等MySql
- sql 內連線和外連線SQL
- 外連線與連線順序
- SQL SERVER 自連線、外連線SQLServer
- oracle 外連線的使用Oracle
- MySQL筆記3——內連線/外連線、多表連線MySql筆記
- 外連線的一些總結
- SQL中的左連線和右連線SQL
- sybase的外連線
- mysql INNER JOIN、LEFT JOIN、RIGHT JOIN;內連線(等值連線)、左連線、右連線MySql
- 深入淺出SQL之左連線、右連線和全連線SQL
- Oracle左右全連線總結Oracle
- iOS wifi連線外設iOSWiFi