SQL RIGHT JOIN

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_idCustomersOrders 表右连接,customer_id 是两个表的公共列。结果集包含

  • Customers 表中的 customer_idfirst_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 是要连接的右表
  • column1column2 是两个表中相关的列

示例: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;

此代码的工作原理如下

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

在这里,SQL 命令选择 customer_idfirst_name 列(来自 Customers 表)以及 amount 列(来自 Orders 表)。

并且,结果集将包含 customer_idCustomers 表的)和 customerOrders 表的)之间存在匹配的行,以及 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 命令连接 CustomersOrders 表,并选择 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 命令对 CategoriesProducts 表执行右连接,并分别为它们分配别名 CP


另请阅读

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

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

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

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