sql中join的区别
执行以下代码,可以清楚的看到区别:
declare @a table(a int,b int)
declare @b table(a int,b int)
insert @a values(1,1)
insert @a values(2,2)
insert @b values(1,1)
insert @b values(3,3)
--左:
select * from @a Aa left join @b Bb on Aa.a=Bb.a
--右:
select * from @a Aa right join @b Bb on Aa.a=Bb.a
--内
select * from @a Aa join @b Bb on Aa.a=Bb.a
--外
select * from @a Aa full join @b Bb on Aa.a=Bb.a
--完全
select * from @a,@b
注:1. join为 inner join 的简写,二者查询结果一样。
2. outer join 不同于inner join,不能单独使用,必须指定方向。只能是 left outer join、right outer join 和 full outer join, 而我们一般使用这些的时候会省略outer。
两个语句的执行效率的比较:
语句为: select * from @a Aa join @b Bb on Aa.a=Bb.a
select * from @a Aa, @b Bb where Aa.a=Bb.a
关于这两条语句的执行效率很多人有不同的意见,起初我也认为 join的效率会高些,经过网上高手的指点,查看两者的执行计划,一切明了。执行计划的截图如下:

两者的执行计划没有任何区别,所以查询效率应该是一样的。

浙公网安备 33010602011771号