SQL RIGHT JOIN
语句根据公共列连接两个表。它选择这些列中具有匹配值的记录以及右表中剩余的行。
示例
-- join Customers and Orders tables
-- based on their shared customer_id columns
-- Customers is the left table
-- Orders is the right table
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 列(包括那些 customer_id 值不存在于Customers
表中的行)
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
-- join Customers and Orders tables
-- based on customer_id of Customers and customer of Orders
-- Customers is the left table
-- Orders is the right table
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
RIGHT JOIN Orders
ON Customers.customer_id = Orders.customer;
此代码的工作原理如下

在这里,SQL 命令选择 customer_id
和 first_name
列(来自 Customers
表)以及 amount
列(来自 Orders
表)。
并且,结果集将包含 customer_id
(Customers
表的)和 customer
(Orders
表的)之间存在匹配的行,以及 Orders
表中的所有剩余行。
注意: 我们的在线 SQL 编译器不支持 RIGHT JOIN
,因为它基于 SQLite。但是,您可以通过使用 LEFT JOIN 并交换左右表来获得相同的结果。
-- left join Orders and Customers tables
-- Orders is the left table
-- Customers is the right table
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 代码更短更清晰。例如,
-- use alias C for Categories table
-- use alias P for Products table
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。
另请阅读