📜  SQL 右连接(1)

📅  最后修改于: 2023-12-03 15:05:18.613000             🧑  作者: Mango

SQL 右连接

SQL 右连接(RIGHT JOIN)用于根据两个表中的匹配列,返回两个表中所有数据以及满足连接条件的记录。但是,如果左表中没有匹配的记录,则返回NULL。右连接与 SQL 左连接 相反。

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

以以下两个表为例:

orders 表:

| OrderID | CustomerID | OrderDate | |--------|------------|------------| | 1 | 4 | 2021-01-01 | | 2 | 3 | 2021-02-01 | | 3 | 3 | 2021-02-10 | | 4 | 2 | 2021-03-01 | | 5 | 4 | 2021-03-15 |

customers 表:

| CustomerID | CustomerName | ContactName | |------------|---------------|----------------| | 1 | Alibaba | Jack Ma | | 2 | Tencent | Pony Ma | | 3 | Baidu | Robin Li | | 4 | ByteDance | Zhang Yiming | | 5 | JD.com | Richard Liu |

返回一个右连接表,以显示所有客户以及他们的订单(如果有)。如果客户没有订购,则返回NULL 值。

SELECT customers.CustomerName, orders.OrderDate
FROM customers
RIGHT JOIN orders
ON customers.CustomerID = orders.CustomerID
ORDER BY orders.OrderDate;

输出结果:

| CustomerName | OrderDate | |--------------|------------| | NULL | 2021-01-01 | | Baidu | 2021-02-01 | | Baidu | 2021-02-10 | | Tencent | 2021-03-01 | | ByteDance | 2021-03-15 | | NULL | NULL |

在此查询中,使用了 RIGHT JOIN 子句将 customers 表设置为右侧表,orders 表设置为左侧表。SELECT 语句从这两个表中选择 CustomerName 和 OrderDate,以在结果集中显示这些列。ON 子句根据 CustomerID 对两个表进行连接。

在结果中,NULL 值表示并没有相应的记录。第一个和最后一个记录中的 NULL 值表示没有与表 customers 或 orders 相关联的记录。