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