SQL -- JOIN子句
FilmID FilmName YearMade |
1 My Fair Lady 1964 |
FilmID FirstName LastName |
1 Rex Harrison |
1 Audrey Hepburn |
FilmID FilmName YearMade FirstName LastName |
1 My Fair Lady 1964 Rex Harrison |
1 My Fair Lady 1964 Audrey Hepburn |
1、INNER JOIN
Inner Join 是最常用的JOIN型別。雖然都是基於一個或多個公共欄位來把記錄匹配到一起,但Inner Join只返回進行聯結的欄位上匹配的記錄。現在我們對錶做些
Inner Join 會得到什麼結果。下面是Films表:
FilmID FilmName YearMade |
1 My Fair Lady 1964 2 Unforgiven 1992 |
FilmID FirstName LastName |
1 Rex Harrison 1 Audrey Hepburn 2 Clint EastWood 5 Humphrey Bogart |
FilmID FilmName YearMade FirstName LastName |
1 My Fair Lady 1964 Rex Harrison 1 My Fair Lady 1964 Audrey Hepburn 2 Unforgiven 1992 Clint EastWood |
2、OUTER JOIN
先來看看 Outer Join 的語法
Select From
語法中的 Outer 是可以省略的, 例如你可以用 Left Join 或是 Right Join, 在本質上, Outer Join 是 inclusive, 叫它做包容性吧! 不同於 Inner Join 的排他性, 因此在 Left Outer Join 的查詢結果會包含所有 Left 資料表的資料。對Films表和Actors表做Left Outer Join的結果如下:(以FilmID相等作為on的條件)
FilmID FilmName YearMade FirstName LastName |
1 My Fair Lady 1964 Audrey Hepburn 1 My Fair Lady 1964 Rex Harrison 2 Unforgiven 1992 Clint EastWood |
FilmID FilmName YearMade FirstName LastName |
1 My Fair Lady 1964 Audrey Hepburn 1 My Fair Lady 1964 Rex Harrison 2 Unforgiven 1992 Clint EastWood 5 NULL NULL Humphrey Bogart |
Full Outer Join (全外連線)則包含左、右兩個表的全部行,不管另外一邊的表中是否存在與它們匹配的行。
3、CROSS JOIN
Cross Join用於對兩個源表進行純關係代數的乘運算。它不使用連線條件來限制結果集合,而是將分別來自兩個資料來源中的行以所有可能的方式進行組合。資料集合中一的每個行都要與資料集合二中的每一個行分別組成一個新的行。例如,如果第一個資料來源中有5個行,而第二個資料來源中有4個行,那麼在它們之間進行交叉連線就會產生20個行。人們將這種型別的結果集稱為笛卡爾乘積。大多數交叉連線都是由於錯誤操作而造成的;但是它們卻非常適合向資料庫中填充例子資料,或者預先建立一些空行以便為程式執行期間所要填充的資料保留空間。在交叉連線中沒有on條件子句。
原文地址:http://www.cnblogs.com/lantionzy/archive/2009/10/12/1581051.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-616347/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle SQL with 子句OracleSQL
- SQL joinSQL
- SQL grouping sets 子句SQL
- sql中的join、left join、right joinSQL
- SQL中 where 子句和having子句中的區別SQL
- Oracle SQL JOINOracleSQL
- 【SQL】13 SQL 別名、SQL 連線(JOIN)、SQL INNER JOIN 關鍵字、SQL LEFT JOIN 關鍵字、SQL RIGHT JOIN 關鍵字、SQL FULL OUTER JSQL
- SQL之limit子句的使用SQLMIT
- sql之left join、right join、inner join的區別SQL
- SQL not exist out joinSQL
- sql left join 和 right join解釋SQL
- SQL中聯表查詢操作(LEFT JOIN, RIGHT JOIN, INNER JOIN)SQL
- exists子句在Sql中的含義SQL
- sql的left join 、right join 、inner join之間的區別SQL
- Sql 之 join 001SQL
- sql語言中join操作SQL
- 【學習】SQL基礎-005-group by子句SQL
- SQL語句中不同的連線JOIN及SQL中join的各種用法SQL
- sql語句中JOIN ON 的使用SQL
- sql join例項圖解SQL圖解
- SQL JOIN 簡單介紹SQL
- SQL最佳化 之 -- joinSQL
- sql server left join問題SQLServer
- sql的 INNER JOIN 語法SQL
- SQL語句各子句的執行順序SQL
- ORACLE SQL開發where子句之case-whenOracleSQL
- SQL中的Filter, join, semi-join等概念的釋義SQLFilter
- Spark SQL如何選擇join策略SparkSQL
- SQL 優先順序join>whereSQL
- SQL join中on與where區別SQL
- SQL INNER JOIN 關鍵字 用法SQL
- sql的left join 命令詳解SQL
- 頁面展示多表join的sqlSQL
- 【SQL】Oracle SQL join on語句and和where使用區別SQLOracle
- 圖解 SQL 裡的各種 JOIN圖解SQL
- 探究Presto SQL引擎(2)-淺析JoinRESTSQL
- python pandas Join SQL⻛格合併PythonSQL
- 一張圖說明SQL的join用法SQL