MySQL JOIN 多表查询
INNER/LEFT/RIGHT JOIN 关联多张表 · 难度:进阶 · +20XP
JOIN — 合并多表数据
JOIN 将多张表按关联条件合并到一起查询。这是关系型数据库最强大的特性之一。
JOIN 类型
| 类型 | 结果 | 场景 |
|---|---|---|
| INNER JOIN | 两表都匹配的行 | 最常用 |
| LEFT JOIN | 左表全部 + 右表匹配(无匹配则 NULL) | 统计、补全 |
| RIGHT JOIN | 右表全部 + 左表匹配 | 较少用 |
INNER JOIN 示例
SELECT u.name AS user, o.total, o.created_at
FROM users u INNER JOIN orders o ON u.id = o.user_id
WHERE o.total > 100 ORDER BY o.created_at DESC;
LEFT JOIN 示例
-- 统计每个客户的订单数量(包括没有订单的客户)
SELECT c.name, COUNT(o.id) AS order_count
FROM customers c LEFT JOIN orders o ON c.id = o.customer_id
GROUP BY c.id ORDER BY order_count DESC;
多表 JOIN
SELECT o.id, u.name, p.name AS product
FROM orders o
JOIN users u ON o.user_id = u.id
JOIN products p ON o.product_id = p.id;