我已经编写了sql查询,有三个连接。
select *from table1
LEFT JOIN table2 TTS on table1.field1= table2.field2
INNER JOIN table3 on table1.field3 = table2.field4
我的要求是我想要table1的所有条目,所以左边连接table2。之后我想用table3连接Inner。那么请告诉我们sql查询将从左到右或从右到左执行的顺序
答案 0 :(得分:1)
通常,join
按照编写顺序逻辑实现(除非括号更改顺序)。因此,正如所写的那样,您的联接是按照您的意图逻辑实现的。
实际运行查询的方式留给执行引擎。
此外,您的查询相当于:
select . . .
from table1 INNER JOIN
table2 TTS
on table1.field1 = table2.field2 INNER JOIN
table3
on table1.field3 = table2.field4 ;
为什么呢? LEFT JOIN
可能会在table1
中生成table2
中没有匹配项的行。这些行中的field4
为NULL
,第二行on
会将其过滤掉。
通常,在使用left join
的查询中,第一个join
之后的所有left join
都是select . . .
from table1 LEFT JOIN
table2 TTS
on table1.field1 = table2.field2 LEFT JOIN
table3
on table1.field3 = table2.field4 ;
。所以你可能打算:
table1
这将保留{{1}}中的所有行,而不管其他两个表中的匹配。