查询条件放在 ON 后面:
属于"连接条件"。在连接时进行筛选,不符合条件的右表记录会被当作不存在,但左表记录依然保留。
查询条件放在 WHERE 后面:
属于"结果过滤"。连接完成后,对整个结果集进行大扫除,不符合条件的行直接整行删掉。
当你在使用 LEFT JOIN 却发现查出来的数量比预期少时,应该检查 WHERE 子句里是不是引用了右表的字段。
属于"连接条件"。在连接时进行筛选,不符合条件的右表记录会被当作不存在,但左表记录依然保留。
属于"结果过滤"。连接完成后,对整个结果集进行大扫除,不符合条件的行直接整行删掉。
当你在使用 LEFT JOIN 却发现查出来的数量比预期少时,应该检查 WHERE 子句里是不是引用了右表的字段。