我写了一个sql查询,有三个连接。
select *from table1
LEFT JOIN table2 TTS on table1.field1= table2.field2
INNER JOIN table3 on table1.field3 = table2.field4
我的要求是我想要 table1 的所有条目与 table2 进行左连接。之后我想与 table3 进行内连接。所以请告诉我们sql查询将按照从左到右或从右到左的顺序执行
最佳答案
一般来说,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
会将它们过滤掉。
通常,在使用左连接
的查询中,第一个之后的所有连接
都是左连接
。所以你可能打算:
select . . .
from table1 LEFT JOIN
table2 TTS
on table1.field1 = table2.field2 LEFT JOIN
table3
on table1.field3 = table2.field4 ;
这将保留 table1
中的所有行,无论其他两个表中是否匹配。
关于mysql - mysql 中连接按什么顺序执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37240717/