这段时间写了不少多表查询,难得有一些体会,赶紧记录下来
一、表数据过滤
当你想要查询两个表中都拥有的数据时可以使用 inner join
二、表数据转换
当你想用另一个表的数据替换当前表数据时可以使用 left join (right join)
三、join 的负面影响
不管是inner join 还是left join (right join) ,当两个表中都存在关联数据时,两个表数据做笛卡尔积相连
如果其中一个表中关联的字段数据不唯一时,会导致另外一个表的数据重复,所以 join 查询时尽量先将两个表的数据去重,并做好数据重复时的考虑
四、on 语句
inner join 后面的 on 条件作用于两个表,剔除掉两个表中不满足条件的数据
Left join (right join) 后面的 on 语句只作用于副表,主表数据不管是否满足条件都保留,剔除副表不满足条件的数据,当主表数据找不到匹配时,副表数据区域为 null