SQL語句:LEFT JOIN和RIGHT JOIN運算

2010-08-28 10:52:36來源:西部e網(wǎng)作者:

LEFT JOIN 和 RIGHT JOIN 運算

用于 FROM 子句時,把源表記錄組合起來。

語法

FROM表1 [ LEFT | RIGHT ] JOIN表2
    ON 表1.字段1 compopr 表2. 字段2

LEFT JOIN 及 RIGHT JOIN 運算可分為以下幾個部分:

部分 說明

table1, table2 記錄被組合的表的名稱。
field1, field2 被聯(lián)接的字段的名稱。且這些字段必須有相同的數(shù)據(jù)類型及包含相同類型的數(shù)據(jù),但它們不需要有相同的名稱。
compopr 任何的關系比較運算子:"=," "<," ">," "<=," ">=," 或 "<>."

說明

用 LEFT JOIN 運算 創(chuàng)建左邊外部聯(lián)接.左邊外部聯(lián)接將包含了從第一個(左邊)開始的兩個表中的全部記錄,即使在第二個(右邊)表中并沒有相符值的記錄。

用RIGHT JOIN 運算 創(chuàng)建 右邊外部聯(lián)接.右邊外部聯(lián)接將包含了從第二個(右邊)開始的兩個表中的全部記錄,即使在第一個(左邊)表中并沒有匹配值的記錄。

例如,可以使用 LEFT JOIN 與部門(左邊)及員工(右邊)表來選擇所有的部門,包含了沒有分配到員工的部門?梢允褂 RIGHT JOIN 選擇所有的員工,包含了沒有分配到部門的員工。

下列示例顯示如何在類標識符字段中聯(lián)接類表及產(chǎn)品表。查詢將會列出所有種類的列表,包含那些沒有產(chǎn)品在其中的種類:

SELECT CategoryName,

ProductName

FROM Categories LEFT JOIN Products

ON Categories.CategoryID = Products.CategoryID;

在本例中,CategoryID 是聯(lián)接的字段,但由于它不包含在 SELECT 語句中,因此,也不包含在查詢結果中。要包含聯(lián)接的字段,請在 SELECT 語句中輸入字段名 — 在這個示例中為 Categories.CategoryID。

注意

欲創(chuàng)建只包含聯(lián)接字段中數(shù)據(jù)相同的記錄的查詢,請用 INNER JOIN 運算。

-在 INNER JOIN 之中可以寫一個嵌套的 LEFT JOIN 或一個 RIGHT JOIN,但是在一個 LEFT JOIN 或一-個 RIGHT JOIN 之中不能寫嵌套的 INNER JOIN。請參閱 INNER JOIN 主題中有關使用嵌套的討論,從-其中可獲知如何在其它聯(lián)接中編寫嵌套聯(lián)接的信息。
-可以鏈接多個 ON 子句。
-若試圖聯(lián)接包含 Memo或 OLE Object數(shù)據(jù)的字段,會導致錯誤。

關鍵詞:SQL