在本教程中,将学习如何使用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数据分组
												
						
						
					
					
					