共用方式為


聯結類型

聯結資料表時,您建立的聯結類型將影響結果集中的資料列。 您可以建立下列聯結類型:

  • 內部聯結:該聯結僅顯示同時在兩個聯結資料表中都有相符項目的資料列 (這是查詢和檢視表設計工具中的預設聯結類型)。例如,您可以聯結 titles 和 publishers 資料表,建立顯示每本書的發行者名稱的結果集。 在內部聯結中,結果集中不包含沒有發行者資訊的書籍,也不包含沒有書籍資訊的發行者。 這類聯結所產生的 SQL 將如下所示:

    SELECT     title, pub_name
    FROM         titles INNER JOIN
    publishers ON titles.pub_id = publishers.pub_id
    
    注意事項注意事項

    當您建立內部聯結,含有 NULL 的資料行不符合任何值,因此不包含在結果集中。 Null 值也不符合其他 Null 值。

  • 外部聯結:該聯結包含資料列,即使聯結的資料表彼此沒有關聯的資料列。 您可以建立三種不同的外部聯結來指定您要包含的不相符資料列:

    • 左外部聯結:包括第一個命名資料表 (即「左」資料表,在 JOIN 子句的最左邊) 的所有資料行。 右資料表中不相符的資料列將不會出現。 例如,下列 SQL 陳述式將說明 titles 和 publishers 資料表之間的左外部聯結,該聯結可包括所有書名,即使該書名並沒有發行者資訊:

      SELECT titles.title_id, 
             titles.title, 
             publishers.pub_name
      FROM titles LEFT OUTER JOIN publishers 
                  ON titles.pub_id 
                   = publishers.pub_id
      
    • 右外部聯結:包括第二個命名資料表 (即「右」資料表,在 JOIN 子句的最右邊) 的所有資料列。 左資料表中不相符的資料列將不會出現。 例如,titles 和 publishers 資料表間的右外部聯結將包括所有發行者,即使該發行者在 titles 資料表中並沒有書籍。 產生的 SQL 將如下所示:

      SELECT titles.title_id, 
             titles.title, 
             publishers.pub_name
      FROM titles RIGHT OUTER JOIN publishers 
                  ON titles.pub_id 
                   = publishers.pub_id
      
    • 完整外部聯結:包括所有聯結資料表的所有資料列,不論這些資料列是否相符。 例如,titles 和 publishers 之間的完整外部聯結將顯示所有書籍和所有發行者,即使其中一個資料表在另一個資料表中並沒有相符的項目。

      SELECT titles.title_id, 
             titles.title, 
             publishers.pub_name
      FROM titles FULL OUTER JOIN publishers 
                  ON titles.pub_id 
                   = publishers.pub_id
      
      注意事項注意事項

      某些資料庫 (例如,Oracle) 不支援完整外部聯結。

  • 交叉聯結:該聯結的結果集將出現一個資料列,該資料列中將包括兩個資料表中每一個可能的資料列組合。 例如,作者交叉聯結發行者將產生一個結果集,其中一個資料列將出現每一個可能的作者/發行者組合。 產生的 SQL 將如下所示:

    SELECT *
    FROM authors CROSS JOIN publishers 
    

請參閱

概念

使用結果窗格中的資料

其他資源

指定搜尋準則