在本教學中,將學習如何使用SQL Server INNER JOIN子句查詢來自多個表的數據。
SQL Server INNER JOIN簡介
內連接是SQL Server中最常用的連接之一。 內部聯接子句用於查詢來自兩個或多個相關表的數據。
請參閱以下products和categories表:

以下語句從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;
執行上面查詢語句,得到以下結果:
在此查詢中,內部連接子句匹配products和categories表中的行。 如果products表中的行在category_id列中具有與categories表中的行(ID列)相同的值,則查詢將選擇列表中指定的列的值組合為新行,並在結果集中包含該新行。
SQL Server INNER JOIN語法
以下顯示了SQL Server INNER JOIN子句的語法:
SELECT
select_list
FROM
T1
INNER JOIN T2 ON join_predicate;
在此語法中,從T1和T2表中查詢檢索數據:
- 首先,在
FROM子句中指定主表(T1) - 其次,在
INNER JOIN子句和連接謂詞中指定第二個表(T2)。 只有連接謂詞計算為TRUE的行才包含在結果集中。
INNER JOIN子句將表T1的每一行與表T2的行進行比較,以查找滿足連接謂詞的所有行對。 如果連接謂詞的計算結果為TRUE,則匹配的T1和T2行的列值將合併為一個新行並包含在結果集中。
下表說明了兩個表T1(1,2,3)和T2(A,B,C)的內部連接。 結果包括行:(2,A)和(3,B),因為它們具有相同的模式。

SQL Server內聯接示例
請參閱以下幾個表:products, categories和brands表:

以下語句使用兩個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數據分組
