LEFT JOIN、RIGHT JOIN、INNER JOIN 的区别

59 阅读1分钟

1. INNER JOIN(内连接)  - 最常用

概念:只返回两个表中都有匹配的记录

SELECT * 
FROMA
INNER JOIN 表B 
ON 表A.id = 表B.a_id;

图示

image.png

示例

sql

-- 获取既有订单又有客户的记录
SELECT orders.id, customers.name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.id;

2. LEFT JOIN(左连接)  - 也很常用

概念:返回左表的所有记录 + 右表的匹配记录(没有匹配则为NULL)

sql

SELECT * 
FROMA
LEFT JOIN 表B 
ON 表A.id = 表B.a_id;

图示

image.png

示例

sql

-- 获取所有客户及其订单(即使没有订单的客户也显示)
SELECT customers.id, customers.name, orders.order_date
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id;

3. RIGHT JOIN(右连接)  - 较少用

概念:返回右表的所有记录 + 左表的匹配记录(没有匹配则为NULL)

sql

SELECT * 
FROMA
RIGHT JOIN 表B 
ON 表A.id = 表B.a_id;

图示

image.png

示例

sql

-- 获取所有订单及其客户(即使客户信息已删除)
SELECT orders.id, customers.name
FROM customers
RIGHT JOIN orders ON customers.id = orders.customer_id;