📅  最后修改于: 2023-12-03 15:05:18.613000             🧑  作者: Mango
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 相关联的记录。