完全不一样。 这是一个非常关键的区别,直接决定了你的查询结果是“保留所有左表数据”还是“丢失左表数据”。
简单来说:
● WHERE 过滤左表字段:✅ 安全。符合 LEFT JOIN 的逻辑,只筛选左表的数据行。
● WHERE 过滤右表字段:❌ 危险。会直接把没匹配到的左表数据(即右表为 NULL 的行)给删掉,导致 LEFT JOIN 退化成 INNER JOIN 。
想保全左表所有数据,就用 LEFT JOIN;想让右表不匹配的数据显示为空,记得检查 ON 条件;千万别把右表的筛选条件误写在 WHERE 里,除非你真的想把 LEFT JOIN 变成 INNER JOIN。