LEFT JOIN 和 RIGHT JOIN 運算
用于 FROM 子句時,把源表記錄組合起來。
語法
FROM表1 [ LEFT | RIGHT ] JOIN表2
????ON 表1.字段1compopr 表2. 字段2
LEFT JOIN 及 RIGHT JOIN 運算可分為以下幾個部分:
部分 | 說明 |
---|---|
table1, table2 | 記錄被組合的表的名稱。 |
field1, field2 | 被聯接的字段的名稱。且這些字段必須有相同的數據類型及包含相同類型的數據,但它們不需要有相同的名稱。 |
compopr | 任何的關系比較運算子:"=," "<," ">," "<=," ">=," 或 "<>." |
說明
用 LEFT JOIN 運算 創建左邊外部聯接.左邊外部聯接將包含了從第一個(左邊)開始的兩個表中的全部記錄,即使在第二個(右邊)表中并沒有相符值的記錄。
用RIGHT JOIN 運算 創建 右邊外部聯接.右邊外部聯接將包含了從第二個(右邊)開始的兩個表中的全部記錄,即使在第一個(左邊)表中并沒有匹配值的記錄。
例如,可以使用 LEFT JOIN 與部門(左邊)及員工(右邊)表來選擇所有的部門,包含了沒有分配到員工的部門。可以使用 RIGHT JOIN 選擇所有的員工,包含了沒有分配到部門的員工。
下列示例顯示如何在類標識符字段中聯接類表及產品表。查詢將會列出所有種類的列表,包含那些沒有產品在其中的種類:
SELECT CategoryName,
ProductName
FROM Categories LEFT JOIN Products
ON Categories.CategoryID = Products.CategoryID;
在本例中,CategoryID 是聯接的字段,但由于它不包含在 SELECT 語句中,因此,也不包含在查詢結果中。要包含聯接的字段,請在 SELECT 語句中輸入字段名 — 在這個示例中為 Categories.CategoryID。
注意
欲創建只包含聯接字段中數據相同的記錄的查詢,請用 INNER JOIN 運算。
- 在 INNER JOIN 之中可以寫一個嵌套的 LEFT JOIN 或一個 RIGHT JOIN,但是在一個 LEFT JOIN 或一個 RIGHT JOIN 之中不能寫嵌套的 INNER JOIN。請參閱 INNER JOIN 主題中有關使用嵌套的討論,從其中可獲知如何在其它聯接中編寫嵌套聯接的信息。
- 可以鏈接多個 ON 子句。若需更多信息,請參閱在 INNER JOIN 主題中的子句鏈接的討論。
若試圖聯接包含 Memo或 OLE Object數據的字段,會導致錯誤。
請參閱
FROM 子句 (Microsoft Jet SQL) | UNION 運算 (Microsoft Jet SQL) |
INNER JOIN 運算 (Microsoft Jet SQL) | ? |