left join 与left outer 不同的join

2023-05-24




A


left join B 连接记录数与A表记录数相同。


A


right join B 连接的记录数与B表的记录数相同


A


left join B 等价B right join A





table A:


Field_K, Field_A



1 a



3 b



4 c




table B:


Field_K, Field_B



1 x



2 y



4 z




select a.Field_K, a.Field_A, b.Field_K, b.Field_B



from a left join b on a.Field_K = b.Field_K



Field_K Field_A Field_K Field_B



-- -------- ---------- ---------- ----------


1 a 1 x



3 b NULL NULL



4 c 4 z




select a.Field_K, a.Field_A, b.Field_K, b.Field_B



from a right join b on a.Field_K = b.Field_K



Field_K Field_A Field_K Field_B



-- -------- ---------- ---------- ----------


1 a 1 x



NULL NULL 2 y



4 c 4 z --




举个例子:


假设a表和b表格信息是这样的。


a b


id nameid stock



1 a 1 15



2 b 2 50



3 c




select * from a inner join b on a.id = b.id


这一语法是连接查询中的内部连接,其结果是


在结果列表中出现了两个表相匹配的记录。


从上表来看,结果是这样的。


a.id name b.id stock



1 a 1 15



2 b 2 50



-- --------------------------


select * from a,b where a.id = b.id


这种语法是另一种内部连接的写作方法,它的执行结果与inner


join 一样




-- ------------------------------





select * from a left / right join b on a.id = b.id


在外部连接语法中,这是左外连接或右外连接。


若为左外连接,则显示a表格全部记录,



select a. * ,b. * from a left join b on a.id = b.id


查询结果如下:


a.id name b.id stock



1 a 1 15



2 b 2 50



3 c null null



-- ------------------------------------------


若为右外连接,则显示b所有表格记录,



select a. * ,b. * from a right join b on a.id = b.id


查询结果如下:


a.id name b.id stock



1 a 1 15



2 b 2 50


--




select a.


* ,b. * from a left join b on a.k = b.k


select


a. * ,b. * from a left outer join b on a.k = b.k


--


--------上边两个相同的left。 join是left outer 简写join


select a. * ,b. * from a left inner join b on a.k = b.k


没有这样的写法,错误的句子.


--




现在你想用多个left 时间是join


比如说10个


我们把10个全部写成left。 join的方法


接着SQL让他自动运转,它会把最后一次出现的left 把join变成left outer


join


所以这个推理,最后一个left join将使用left outer 存在join的形式


当然,不管变化对结果的显示没有任何影响。


但愿我的实验对你有帮助。


本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。

免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com