gpt4 book ai didi

sql - join语句的操作顺序

转载 作者:行者123 更新时间:2023-12-03 07:31:10 25 4
gpt4 key购买 nike

鉴于以下3种方式加入

select t1.* from t1
left join t2 on t1.fk = t2.pk
join t3 on t2.fk = t3.pk

如果 t2 和 t3 之间的连接失败,是否会返回 t1 和 t2 之间成功连接的行?如果操作顺序从左到右,我认为不是,但如果从右到左计算(t3 首先连接到 t2),那么即使前者失败,t1 仍将返回。

它是如何工作的?

最佳答案

ON的放置子句控制 逻辑 评价顺序。

所以首先是t1 LEFT JOIN t2 ON t1.fk = t2.pk发生。此连接的结果是一个包含来自 t1, t2 的所有匹配行的虚拟表。和(因为它是左外连接)任何不匹配的 t1 t2 的行也保留为空值列。

这个虚拟表然后参与下一个连接。 JOIN t3 ON t2.fk = t3.pk
任意 t2t1 中的行不匹配的记录不是第一阶段的虚拟表输出的一部分,因此不会出现在最终结果中。此外,此内部连接 ​​t2.fk = t3.pk将失去任何 NULL t2.fk 的值有效地将你的整个事情重新变成内部连接。

逻辑查询处理很好解释by Itzik Ben Gan here

关于sql - join语句的操作顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12655988/

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