SQL INNER JOIN

SQL INNER JOIN 语句根据公共列连接两个表,并选择这些列中具有匹配值的行。

示例

-- join Customers and Orders tables with their matching fields customer_id

SELECT Customers.customer_id, Orders.item
FROM Customers
INNER JOIN Orders
ON Customers.customer_id = Orders.customer_id;

这里,SQL 命令连接了 CustomersOrders 表。

结果包括 customer_id(来自 Customers)和 item(来自 Orders),其中客户 ID 匹配(Customer.customer_id = Orders.customer_id)。


SQL INNER JOIN 语法

SELECT columns_from_both_tables
FROM table1
INNER JOIN table2
ON table1.column1 = table2.column2

这里,

  • table1table2 - 两个要连接的表
  • column1column2 - table1table2 中共有的列

示例 1:SQL INNER JOIN

-- join the Customers and Orders tables
-- with customer_id and customer fields

SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
INNER JOIN Orders
ON Customers.customer_id = Orders.customer;

这里,如果 customer_idCustomers 表的)和 customerOrders 表的)的值匹配,SQL 命令将从两个表中选择指定的行。

How to use INNER JOIN in SQL
示例:SQL INNER JOIN

如您所见,INNER JOIN 排除了两个表之间不共有的所有行。

注意: 我们也可以使用 SQL JOIN 而不是 INNER JOIN。基本上,这两个子句是相同的。


示例 2:使用匹配字段连接两个表

-- join Categories and Products tables 
-- with their matching fields cat_id

SELECT Categories.cat_name, Products.prod_title
FROM Categories
INNER JOIN Products
ON Categories.cat_id = Products.cat_id;

这里,SQL 命令使用匹配字段 cat_id 选择 CategoriesProducts 表之间的公共行。

结果集包含 Categories 中的 cat_name 列和 Products 中的 prod_title 列。


更多关于 SQL INNER JOIN

带有 AS 别名的 SQL INNER JOIN

我们可以在 INNER JOIN 内部使用 AS 别名 来使我们的查询简短清晰。例如:

-- use alias C for Categories table
-- use alias P for Products table 

SELECT C.cat_name, P.prod_title
FROM Categories AS C
INNER JOIN Products AS P
ON C.cat_id= P.cat_id;

这里,SQL 命令对 CategoriesProducts 表执行内连接,并分别将别名 CP 分配给它们。

连接三个表的 SQL INNER JOIN

我们也可以使用 INNER JOIN 连接两个以上的表。例如:

-- join three tables: Customers, Orders, and Shippings

SELECT C.customer_id, C.first_name, O.amount, S.status
FROM Customers AS C
INNER JOIN Orders AS O
ON C.customer_id = O.customer
INNER JOIN Shippings AS S
ON C.customer_id = S.customer;

这里,SQL 命令

  • 根据 customer_id(来自 Customers 表)和 customer(来自 Orders 表)连接 CustomersOrders
  • 并根据 customer_id(来自 Customers 表)和 customer(来自 Shippings 表)连接 CustomersShippings

该命令返回在两个连接条件中列值都匹配的行。

注意:要运行此命令,每个单独的表都必须有一个 customer_id 列。列名可以不同,只要它们具有相同的数据即可。

带有 WHERE 子句的 INNER JOIN

这是一个带有 WHERE 子句INNER JOIN 示例

-- join Customers and Orders table
-- with customer_id and customer fields

SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
INNER JOIN Orders
ON Customers.customer_id = Orders.customer
WHERE Orders.amount >= 500;

这里,SQL 命令连接两个表并选择 amount 大于或等于 500 的行。


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战