多表串联查询

真实报表常常要串起四五张表:用户 → 订单 → 订单明细 → 商品。多表 JOIN 就是把多个两两连接串成一条链,按顺序写下去即可。

多表串联查询要点

多表串联查询示例

						-- 串起 用户 / 订单 / 订单明细 / 商品
						SELECT u.user_name, o.order_id, p.product_name, oi.qty
						FROM user u
						INNER JOIN orders o ON u.user_id = o.user_id
						INNER JOIN order_item oi ON o.order_id = oi.order_id
						INNER JOIN product p ON oi.product_id = p.product_id;

						-- 统计每个用户买过几种商品
						SELECT u.user_name, COUNT(DISTINCT p.product_id) AS kind_cnt
						FROM user u
						INNER JOIN orders o ON u.user_id = o.user_id
						INNER JOIN order_item oi ON o.order_id = oi.order_id
						INNER JOIN product p ON oi.product_id = p.product_id
						GROUP BY u.user_name;
避坑提醒:多表 JOIN 前先用 WHERE 把大表范围缩到最小,能显著减少中间结果,速度差好几倍。
多表串联查询 · JOIN 多表连接 知识卡片
卡片 06 / 08 · JOIN 多表连接(1080×1440 速查卡片)

JOIN 多表连接知识点