gpt4 book ai didi

sql - 在内连接的 ON 子句中放置条件与主查询的 where 子句中是否存在逻辑差异?

转载 作者:行者123 更新时间:2023-12-04 19:52:01 29 4
gpt4 key购买 nike

考虑这两个相似的 SQL

(ON 子句中的条件)

select t1.field1, t2.field1
from
table1 t1 inner join table2 t2 on t1.id = t2.id and t1.boolfield = 1

(WHERE 子句中的条件)
select t1.field1, t2.field1
from
table1 t1 inner join table2 t2 on t1.id = t2.id
where t1.boolfield = 1

我已经对此进行了一些测试,我可以看到将条件放在两个不同位置以进行外连接之间的区别。
但是在内部联接的情况下,结果集会有所不同吗?

最佳答案

对于 INNER JOIN,没有有效的区别,虽然我认为第二个选项更干净。

对于LEFT JOIN,有很大的不同。 ON 子句指定将从表中选择哪些记录进行比较,WHERE 子句过滤结果。

示例 1:返回 tbl 1 中的所有行,并将它们与 tbl2 中具有 boolfield=1 的适当行进行匹配

Select *
From tbl1
LEFT JOIN tbl2 on tbl1.id=tbl2.id and tbl2.boolfield=1

示例 2:将仅包含 tbl1 中在 tbl2 中具有匹配行且 boolfield=1 的行。它连接表,然后过滤掉不满足条件的行。
Select *
From tbl1
LEFT JOIN tbl2 on tbl1.id=tbl2.id
WHERE tbl2.boolfield=1

关于sql - 在内连接的 ON 子句中放置条件与主查询的 where 子句中是否存在逻辑差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11567318/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com