# LEFT JOIN 和 RIGHT JOIN

URL: https://caijiao.org/mariadb/program/join/outer
Source: docs/mariadb/program/join/outer.md
Description: 本节介绍 MariaDB 中的 LEFT JOIN 和 RIGHT JOIN，用于实现左表或右表的所有记录与另一表匹配记录的连接查询，方便处理不完全匹配的数据关系。

## 1. LEFT JOIN

返回左表的所有记录及右表中匹配的记录，若右表无匹配则结果中对应字段为 NULL。

### 语法

```sql
SELECT columns
FROM table1
LEFT JOIN table2 ON table1.common_field = table2.common_field;
````

### 示例

查询所有客户及其订单（包括没有订单的客户）：

```sql
SELECT customers.name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id;
```

## 2. RIGHT JOIN

返回右表的所有记录及左表中匹配的记录，若左表无匹配则结果中对应字段为 NULL。

### 语法

```sql
SELECT columns
FROM table1
RIGHT JOIN table2 ON table1.common_field = table2.common_field;
```

### 示例

查询所有订单及其客户（包括没有客户信息的订单）：

```sql
SELECT orders.order_id, customers.name
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.id;
```

## 3. 区别总结

| 连接类型       | 返回数据                    |
| ---------- | ----------------------- |
| INNER JOIN | 只返回两表匹配的记录              |
| LEFT JOIN  | 返回左表全部记录 + 右表匹配记录或 NULL |
| RIGHT JOIN | 返回右表全部记录 + 左表匹配记录或 NULL |

---

LEFT JOIN 和 RIGHT JOIN 用于处理数据不完全匹配的场景，提升查询灵活性。
