SQL Server內連接

在本教學中,將學習如何使用SQL Server INNER JOIN子句查詢來自多個表的數據。

SQL Server INNER JOIN簡介

內連接是SQL Server中最常用的連接之一。 內部聯接子句用於查詢來自兩個或多個相關表的數據。

請參閱以下productscategories表:

以下語句從products表中檢索產品資訊:

SELECT
    product_name,
    list_price,
    category_id
FROM
    production.products
ORDER BY
    product_name DESC;

執行上面查詢語句,得到以下結果:

查詢僅返回類分類編號列表,不返回分類名稱。 要在結果集中包含分類名稱,請使用INNER JOIN子句,如下所示:

SELECT
    product_name,
    category_name,
    list_price
FROM
    production.products p
INNER JOIN production.categories c ON c.category_id = p.category_id
ORDER BY
    product_name DESC;

執行上面查詢語句,得到以下結果:

在此查詢中,內部連接子句匹配productscategories表中的行。 如果products表中的行在category_id列中具有與categories表中的行(ID列)相同的值,則查詢將選擇列表中指定的列的值組合為新行,並在結果集中包含該新行。

SQL Server INNER JOIN語法

以下顯示了SQL Server INNER JOIN子句的語法:

SELECT
    select_list
FROM
    T1
INNER JOIN T2 ON join_predicate;

在此語法中,從T1T2表中查詢檢索數據:

  • 首先,在FROM子句中指定主表(T1)
  • 其次,在INNER JOIN子句和連接謂詞中指定第二個表(T2)。 只有連接謂詞計算為TRUE的行才包含在結果集中。

INNER JOIN子句將表T1的每一行與表T2的行進行比較,以查找滿足連接謂詞的所有行對。 如果連接謂詞的計算結果為TRUE,則匹配的T1T2行的列值將合併為一個新行並包含在結果集中。

下表說明了兩個表T1(1,2,3)T2(A,B,C)的內部連接。 結果包括行:(2,A)(3,B),因為它們具有相同的模式。

SQL Server內聯接示例

請參閱以下幾個表:products, categoriesbrands表:

以下語句使用兩個INNER JOIN子句來查詢三個表中的數據:

SELECT
    product_name,
    category_name,
    brand_name,
    list_price
FROM
    production.products p
INNER JOIN production.categories c ON c.category_id = p.category_id
INNER JOIN production.brands b ON b.brand_id = p.brand_id
ORDER BY
    product_name DESC;

執行上面查詢語句,得到以下結果:


上一篇: SQL Server連接表 下一篇: SQL Server數據分組