SQL 道场
返回资料库

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 后先看行数变化,确认连接没有把数据放大。