SQL JOIN:了解 WHERE 和 ON 子句
掌握 SQL JOIN 需要清楚地理解 WHERE
和 ON
子句。 虽然有时可以互换,但它们的功能却有很大不同。
WHERE
子句:连接后过滤
WHERE
子句过滤连接的 结果。 考虑这个例子:
<code class="language-sql">SELECT * FROM Orders LEFT JOIN OrderLines ON OrderLines.OrderID = Orders.ID WHERE Orders.ID = 12345;</code>
此处,WHERE
子句过滤输出,仅显示 Orders.ID
为 12345 的行。这适用于 之后,LEFT JOIN
合并了 Orders
和 OrderLines
的数据。
ON
子句:连接条件定义
ON
子句定义 连接条件 本身。 观察:
<code class="language-sql">SELECT * FROM Orders LEFT JOIN OrderLines ON OrderLines.OrderID = Orders.ID AND Orders.ID = 12345;</code>
ON
子句规定,只有 OrderLines.OrderID
与 Orders.ID
匹配且 Orders.ID
等于 12345 的行才会包含在联接中。 此过滤发生在加入过程中。
关键语义区别
虽然 WHERE
和 ON
可能会产生与 INNER JOIN
类似的结果,但它们的语义角色是不同的。 WHERE
过滤最终连接的数据集,而 ON
确定连接操作中包含哪些行。
以上是SQL JOIN:WHERE 与 ON:过滤连接数据的主要区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!