SQL中的右连接(RIGHT JOIN)
提示
- 基本功能:SQL中的
RIGHT JOIN
(右连接)根据两个表的共同列连接它们,选择这些列中有匹配值的记录和右表中的其余行。 - 使用场景:通常用于查询右表(如
Orders
)中的所有记录,同时包括左表(如Customers
)中与之匹配的记录。 - 语法和结构:使用
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_id
将 Customers
和 Orders
表进行右连接,customer_id
是两个表共有的。结果集包含:
Customers
表的customer_id
和first_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
是要连接的右表column1
和column2
是两个表中相关联的列
示例: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 命令选择了 Customers
表的 customer_id
和 first_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 JOIN
与 WHERE
子句
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 命令连接 Customers
和 Orders
表,并选择 amount
大于或等于 500 的行。
SQL RIGHT JOIN
与 AS
别名
我们可以在 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 命令对 Categories
和 Products
表进行右连接,同时为它们分别分配别名 C 和 P。
推荐阅读