用过很多次left join,right join,看到查询出的结果,知道可能是没用left join、或者right join导致的结果,但都是用一次,网上查一次使用规则,学到的东西只是皮毛。今天用文字记录一下,加深印象,知根知底才能学的好。
在我们查一个表的时候
比如:
人员信息表:
编号 | 名称 | 部门ID | 年龄 | 职务ID | 性别 | 电话 |
122 | 李晶晶 | 1 | 26 | 1 | 女 | 2234555 |
123 | 张金 | 1 | 29 | null | 男 | 3322123 |
124 | 王力 | 2 | 35 | 1 | 男 | 2245553 |
125 | 李心 | 3 | 21 | 2 | 女 | 3332233 |
126 | 鲁兰 | null | 232 | null | 女 | 3486443 |
职务信息表:
职务ID | 职务名称 |
1 | 职员 |
2 | 经理 |
这里有两张表,我希望查询的结果是得到各人员表的职位信息我职位名称,没有对应职位的不查出来。以上就是需求,接下来是查的结果。
当两张表的的联合查询时,where条件是职务id相等,这里查出来的结果就会往往会超过我们的预期结果!
人员信息表中有些职务id是职务信息表中职务id没有的,所以会有出现职务为空的数据,但我们只需要职务为1、2两个职务的数据,所以,这个时候,我们就得以职务表为基准表,left join人员信息表,这样才能是以职务信息表为准的数据
总结:
当两个或者两个以上的表联合查询时,如果两个表的数据不能一一对应,那么,我们只能以某个表为基准表,进行left join、或者right join,以基准表里有的数据为准