跳到主要内容

SQL中的连接(JOINS)

提示
  1. JOIN 语句的作用:SQL 中的 JOIN 命令通过共同列将两个表连接起来,并选择这些列中具有匹配值的记录。
  2. JOIN 语法:基本语法为 SELECT columns_from_both_tables FROM table1 JOIN table2 ON table1.column1 = table2.column2,其中 table1table2 是要连接的表,column1column2 是两个表中的相关列。
  3. JOIN 类型和别名:SQL 中存在多种 JOIN 类型,包括 INNER JOINLEFT JOINRIGHT JOINFULL OUTER JOIN。使用 AS 别名可以使查询更简短和清晰。

SQL 中的 JOIN 命令基于两个表的共同列连接这些表,并选择这些列中具有匹配值的记录。

示例

-- 基于它们的 customer_id 列的共同值

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

这里,SQL 命令基于两个表中 customer_id 列的共同值连接 CustomersOrders 表。

结果集将包括:

  • Customers 表的 customer_idfirst_name
  • Orders 表的 item

SQL JOIN 语法

SQL JOIN 语句的语法是:

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

这里,

  • table1table2 是要连接的两个表
  • column1table1 中与 table2 中的 column2 相关的列

注意: SQL 中有 4 种类型的 JOIN。但 INNER JOINJOIN 是指同一件事。

示例 1:SQL JOIN


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

这是这段代码的工作原理:

如何在 SQL 中使用 JOIN

这里,SQL 命令选择了 Customers 表的 customer_idfirst_name 列以及 Orders 表的 amount 列。

结果集将包含 customer_id(来自 Customers 表)和 customer(来自 Orders 表)之间有匹配的行。

SQL JOIN 的类型

正如我们提到的,本文中执行的 JOIN 命令是 INNER JOIN

在 SQL 中,我们有四种主要类型的 join:

SQL JOIN 和别名

我们可以使用 AS 别名 使查询简短和清晰。例如,

-- 对 Orders 表使用别名 O
SELECT C.customer_id, C.first_name, O.amount
FROM Customers AS C
JOIN Orders AS O
ON C.customer_id = O.customer;

这里,SQL 命令在连接 CustomersOrders 表时分别为它们分配别名 CO

此外,我们还可以使用 AS 别名暂时更改列名。例如,

-- 对 Orders 表使用别名 O
SELECT C.customer_id AS cid, C.first_name AS name, O.amount
FROM Customers AS C
JOIN Orders AS O
ON C.customer_id = O.customer;

除了给表分配别名之外,上述 SQL 命令还为 Customers 表的列分配了别名:

  • customer_id 列的别名是 cid
  • first_name 列的别名是 name