left join on and 和left join on where 的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了left join on and 和left join on where 的区别相关的知识,希望对你有一定的参考价值。

Table1: temp1

temp1Id Size
1           10
2           20
3           30

Table2: temp2

temp2Id Size Name
1            10   AAA
2            20   BBB
3            20   CCC

select * from dbo.temp1
left join dbo.temp2 on temp1.Size=temp2.Size

temp1Id Size temp2Id Size Name
1 10 1 10 AAA
2 20 2 20 BBB
2 20 3 20 CCC
3 30 NULL NULL NULL

select * from dbo.temp1
left join dbo.temp2 on temp1.Size=temp2.Size
where temp2.Name=‘AAA‘

temp1Id Size temp2Id Size Name
1 10 1 10 AAA

select * from dbo.temp1
left join dbo.temp2 on temp1.Size=temp2.Size
and temp2.Name=‘AAA‘

temp1Id Size temp2Id Size Name
1 10 1 10 AAA
2 20 NULL NULL NULL
3 30 NULL NULL NULL

总结:

on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 

 

以上是关于left join on and 和left join on where 的区别的主要内容,如果未能解决你的问题,请参考以下文章

浅谈!SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别

Oracle的left join中on和where的区别

left join on 后and 和 where 的区别

不支持 Left Join On And 子句

sql left join on and 与 where

left join中,on字段后用and和where的性能区别