多表关联查询核心靠JOIN实现,需明确类型(INNER/LEFT为主)与步骤(主表→JOIN→ON→WHERE),注意索引、驱动表顺序及EXPLAIN优化。
多表关联查询是 MySQL 中最常用也最关键的技能之一,核心靠 JOIN 实现。它不是简单拼表,而是通过字段逻辑关系把分散在不同表里的数据“连起来”,让一次查询就能拿到完整业务信息。
MySQL 主要支持 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN(MySQL 原生不支持,需用 LEFT + RIGHT 模拟)。实际开发中,INNER JOIN 和 LEFT JOIN 占 95% 以上使用量:
户信息。避免“连错”或“漏条件”,建议按顺序操作:
JOIN 不是越多越好,滥用会导致性能骤降或结果异常:
假设三张表:users(id, name)、orders(id, user_id, status)、order_items(order_id, product_name, qty)。想查“已支付订单中每位用户的订单号、商品名和数量”:
SELECT u.name, o.id AS order_no, oi.product_name, oi.qty
FROM users u
INNER JOIN orders o ON u.id = o.user_id
INNER JOIN order_items oi ON o.id = oi.order_id
WHERE o.status = 'paid';
这里用了两次 INNER JOIN,确保只取有用户、有订单、有商品明细的完整链路数据。若想包含“下了单但还没加商品”的订单,第二层 JOIN 应改为 LEFT JOIN。