使用左连接时,怎样确定主表和子表?

使用左连接时,怎样确定主表和子表?

问题描述:

有时候使用left join 时不知道用A表关联B表,还是用B表关联A表,应该怎样考虑这个问题,求解

是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有查询信息列出,而右表只列出满足ON后面条件的部分信息。
例如:你的学生表里面有张三、李四两个学生,只有张三填了院系信息,李四没填,以学生表做主表左连接院系表得到结果就是:
张三 计算机系
李四 NULL
此时应该是:学生表 left join 院系表 on 学生表.院系id=院系表.院系id,相当于左表的信息会全部列举出来(两个学生),另外的右表则只列出满足条件的信息(只有张三有满足on条件的信息)
当然如果是内连接:学生表 inner join 院系表 on 学生表.院系id=院系表.院系id,得到结果就是:
张三 计算机系

这个要看具体场景,左连接是以左表作为主表,来与其他表进行关联查询。(当左表匹配不到右表时,右表字段显示为空)
如:查询学生信息及所在班级
所有的学生信息必须都显示,所以学生表作为主表。
学生表中存在的班级字段,在班级表中找不到,则查询出来的学生记录中,班级字段为空。
外连接定义:
在做关联查询时,我们所需要的数据,除了那些满足关联条件的数据外,还有不满足关联条件的数据。此时需要使用外连接。
会涉及到两个概念:
驱动表(主表):除了显示满足条件的数据,还需要显示不满足条件的数据的表
从表(副表):只显示满足关联条件的数据的表

如果是inner join,那两边就对等了,反正只要不满足on条件,就不显示数据
如果是左连接或者右连接,那么主表不管满足不满足条件都显示数据,而子表只有匹配上主表的部分才连接
那么你到底哪个表想要显示完整的数据,哪个就作为主表呗
如果都想显示,就需要full join