教程 mariadb tutorial

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 用于处理数据不完全匹配的场景,提升查询灵活性。