SQL 基础 / 7 min
JOIN 入门:把两张表按关系连起来
JOIN 的重点不是语法,而是找对两张表之间的关联键。
JOINONforeign key
JOIN 解决什么问题
真实业务数据通常拆在多张表里。比如客户信息在 customers,订单信息在 orders。
如果要看“订单对应的客户名”,就需要把两张表连起来:
SELECT o.id, c.name, o.amount
FROM orders o
JOIN customers c ON c.id = o.customer_id;
ON 是连接条件
ON c.id = o.customer_id 表示:
customers.id是客户表主键orders.customer_id指向下单客户
这两个字段相等时,两张表的行可以拼在一起。
INNER JOIN 和 LEFT JOIN
JOIN 默认只保留匹配成功的行。
LEFT JOIN 会保留左表所有行,即使右表没有匹配。
SELECT c.name, o.id AS order_id
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
这适合找“没下过单的客户”或统计 0 值对象。
常见坑
- 忘写
ON会产生大量错误组合。 - 连接条件写错会导致重复行或漏行。
- JOIN 后先看行数变化,确认连接没有把数据放大。