

新闻资讯
技术学院MySQL中JOIN通过共同字段匹配行组合多表数据,须用ON或WHERE避免笛卡尔积;常用INNER JOIN(默认)和LEFT JOIN(保留左表全部记录),ON影响连接过程,WHERE在连接后过滤,LEFT JOIN中业务条件应放WHERE而非ON以避免退化为INNER JOIN。
MySQL 中的 JOIN 用于把两个或多个表中的数据按关联条件组合起来,核心是“通过共同字段匹
配行”。不写 WHERE 或 ON 条件容易产生笛卡尔积(所有行两两组合),结果爆炸式增长,务必注意。
MySQL 支持多种 JOIN,最常用的是 INNER JOIN 和 LEFT JOIN:
JOIN 默认就是 INNER JOIN,可省略 INNERON 是在连接过程中做条件判断,影响哪些行参与连接;WHERE 是连接完成后再过滤结果。
ON t1.id = t2.id AND t2.status = 'active' 表示:只把右表中 status 为 active 的行拿来匹配,不匹配的左表行仍保留LEFT JOIN ... ON t1.id = t2.id WHERE t2.status = 'active',会把右表为 NULL 的行(即没匹配上的)全过滤掉,LEFT JOIN 变相退化成 INNER JOIN避免常见坑,提升可读性和性能:
INNER JOIN 而非仅 JOIN)FROM users u JOIN orders o ON u.id = o.user_id),避免字段歧义不复杂但容易忽略:JOIN 是基于行匹配的操作,理解清楚“哪张表为主、匹配逻辑怎么走”,比死记语法更重要。