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