在本教學中,將學習如何使用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數據分組