跳到主要内容

SQL中的右连接(RIGHT JOIN)

提示
  1. 基本功能:SQL中的RIGHT JOIN(右连接)根据两个表的共同列连接它们,选择这些列中有匹配值的记录和右表中的其余行。
  2. 使用场景:通常用于查询右表(如Orders)中的所有记录,同时包括左表(如Customers)中与之匹配的记录。
  3. 语法和结构:使用RIGHT JOIN语法时,指定连接的两个表及连接条件,如ON Customers.customer_id = Orders.customer_id,结果集包含左表中匹配的列和右表的所有列。

SQL 中的 RIGHT JOIN 语句基于两个表的共同列连接这两个表。它选择这些列中具有匹配值的记录,以及右表中的剩余行。

示例

-- 连接 Customers 和 Orders 表
-- 基于它们共有的 customer_id 列
-- Customers 是左表
-- Orders 是右表

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

这里,代码根据 customer_idCustomersOrders 表进行右连接,customer_id 是两个表共有的。结果集包含:

  • Customers 表的 customer_idfirst_name
  • Orders 表的 item 列(包括那些在 Customers 表中不存在 customer_id 值的)

RIGHT JOIN 语法

SQL RIGHT JOIN 语句的语法是:

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

这里,

  • table1 是要连接的左表
  • table2 是要连接的右表
  • column1column2 是两个表中相关联的列

示例:SQL RIGHT JOIN

-- 连接 Customers 和 Orders 表
-- 基于 Customers 的 customer_id 和 Orders 的 customer
-- Customers 是左表
-- Orders 是右表

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

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

如何在 SQL 中使用 RIGHT JOIN

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

结果集将包含 customer_id(来自 Customers 表)和 customer(来自 Orders 表)之间有匹配的行,以及 Orders 表中的所有剩余行。

注意: 我们的在线 SQL 编译器不支持 RIGHT JOIN,因为它基于 SQLite。然而,你可以通过使用 LEFT JOIN 并交换左右表来获得相同的结果。

-- 左连接 Orders 和 Customers 表
-- Orders 是左表
-- Customers 是右表
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Orders
LEFT JOIN Customers
ON Orders.customer = Customers.customer_id;

RIGHT JOINWHERE 子句

SQL RIGHT JOIN 语句可以有一个可选的 WHERE 子句。例如,

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

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

SQL RIGHT JOINAS 别名

我们可以在 RIGHT JOIN 中使用 AS 别名 使 SQL 代码简短而清晰。例如,

-- 对 Categories 表使用别名 C
-- 对 Products 表使用别名 P
SELECT C.category_name, P.product_title
FROM Categories AS C
RIGHT JOIN Products AS P
ON C.cat_id = P.cat_id;

这里,SQL 命令对 CategoriesProducts 表进行右连接,同时为它们分别分配别名 CP

推荐阅读