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数据分组