left join 与left outer 不同的join
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