LEFT JOIN with Condition: On 与 WHERE
在 SQL Server 中,LEFT JOIN 通常用于在链接时从一个表中检索数据通过公共列将其传输到另一个表。然而,在 ON 和 WHERE 子句中使用条件时会出现微妙的区别,从而导致不同的结果。
JOIN ON 子句与 WHERE 子句
ON 子句LEFT JOIN 指定确定主表(联接表)中的哪些行将与辅助表(联接表)中的行匹配的条件。相反,WHERE 子句在执行联接后过滤结果集。
示例
考虑以下两个查询:
结果
令人惊讶的是,这两个查询不会产生相同的结果。原因在于 JOIN 和 WHERE 子句之间的差异。
在第一个查询中, ON 子句中的条件限制 t2 中的哪些行与 t1 连接。因此,t2 中不满足条件 (t2.f3
在第二个查询中, 在连接后应用 WHERE 子句中的条件已执行。因此,t1 中的所有行都会与 t2 中的所有行连接,无论它们是否满足条件。随后,WHERE 子句过滤掉不满足条件的行,提供与第一个查询相比不同的结果集。
结论
理解之间的区别使用 LEFT JOIN 时,ON 和 WHERE 子句至关重要。 ON 子句确定连接的匹配行,而 WHERE 子句在连接完成后过滤结果集。这种理解确保从涉及 LEFT JOIN 的 SQL 查询中获得所需的结果。
以上是SQL Server 中的 LEFT JOIN:ON 与 WHERE 子句 – 有什么区别以及何时应使用它们?的详细内容。更多信息请关注PHP中文网其他相关文章!