SQL中,表之间的左联和右联是什么意思

如题所述

例表a
aid
adate
1
a1
2
a2
3
a3
表b
bid
bdate
1
b1
2
b2
4
b4
inner
join
两个表a,b相连接,要取出id相同的字段
select
*
from
a
inner
join
b
on
a.aid
=
b.bid这是仅取出匹配的数据.
此时的取出的是:
1
a1
b1
2
a2
b2
那么left
join
指:
select
*
from
a
left
join
b
on
a.aid
=
b.bid
首先取出a表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1
a1
b1
2
a2
b2
3
a3
空字符
同样的也有right
join
指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1
a1
b1
2
a2
b2
4
空字符
b4
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-27
表关联是在SQL中非常常用的东西,楼主的问题我可以解答,
join全连接:查找左表(主表)和右表(子表)都存在的数据
left
join左联接:查找左表(主表)为查找全集,右表(子表)存在的关联出来,不存在的为NULL。
right
join右连接:刚好和left
join相反
full
join全集关联:相当于把left
join
和right
join
综合起来,即左表(主表)和右表(子表)关联,如果能关联到的显示,如果左有右表没有,则右表显示NULL,如果右表有左表没有
则左表显示NULL
举个例子,你现在有两张表,学生表和成绩表,学生表中有两列数据:学生ID和学生姓名,成绩表中有三列数据,成绩ID、学生ID和总分数
假设学生表中有三行数据,ID为1,2,3,姓名分别为张三,李四,赵五
假设成绩表中也有三行数据:成绩ID为1,2,3,学生ID为
2,3,5,成绩为60,85,90
如果你写
select
*
from
学生表
a
join
成绩表
b
on
a.学生ID=b.学生ID
会出现学生ID为2,3的两条数据
如果你写
select
*
from
学生表
a
left
join
成绩表
b
on
a.学生ID=b.学生ID
会出现学生ID为1,2,3的三条数据,但学生ID为1的那条数据关联到的成绩表信息全为NULL
如果你写
select
*
from
学生表
a
right
join
成绩表
b
on
a.学生ID=b.学生ID
会出现学生ID为2,3,5的三条数据,但学生ID为5的那条数据关联到的学生表信息全为NULL
如果你写
select
*
from
学生表
a
full
join
成绩表
b
on
a.学生ID=b.学生ID
会出现学生ID为1,2,3,5的全部数据,但学生ID为5的那条数据关联到的学生表信息全为NULL,学生ID为1的那条数据关联到的成绩表信息全为NULL
相似回答