📜  SQL右连接(1)

📅  最后修改于: 2023-12-03 14:47:40.855000             🧑  作者: Mango

SQL右连接

在 SQL 中,右连接是一个 JOIN 操作,它返回两个表中至少有一个匹配的所有行,以及右表中没有匹配行的 null 值。右连接是左连接的补集。

以下是一个右连接的示例:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;

上述语句将返回所有订单及其对应的客户名称,如果订单没有对应的客户,则客户名称将为 null 值。

语法

右连接的语法如下:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
示例

假设我们有两张表:Customers 和 Orders。

Customers 表

| CustomerID | CustomerName | ContactName | Country | |------------|--------------|-------------|---------| | 1 | Alfreds | Maria | Germany | | 2 | Ana Trujillo | Ana | Mexico | | 3 | Antonio | Antonio | Mexico |

Orders 表

| OrderID | CustomerID | OrderDate | |---------|------------|-----------| | 1 | 3 | 2020-01-01| | 2 | 1 | 2020-02-01| | 3 | 2 | 2020-03-01|

我们可以使用以下 SQL 语句对这两张表进行右连接:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

它将返回以下结果:

| CustomerName | OrderID | |--------------|---------| | Alfreds | 2 | | Ana Trujillo | 3 | | NULL | | | Antonio | 1 |

这个结果说明了:

  1. Alfreds 这个客户有订单,订单号为 2。
  2. Ana Trujillo 这个客户有订单,订单号为 3。
  3. 没有客户与订单号 4 对应。
  4. Antonio 这个客户有订单,订单号为 1。
总结

右连接操作是非常有用的,尤其在需要查找那些没有匹配项的行时。它也可以与其他操作(如 WHERE 子句和子查询等)一起使用来实现更复杂的查询。