HIVE LEFT JOIN的坑
最近在做一个数据关联处理分析需求,涉及left表right表LEFT JOIN,发现LEFT JOIN后的结果条数比left表的记录多不少。
于是查看结果明细发现最终的结果,不少都是重复的。
最终确定是left 表和right表是一对多的关系,或者说right表有重复的记录也是一样的效果。
于在本地mysql中创建了两个测试表left_join_test和joinids_test测试,如下:
最终结果:
总结:
1、mysql的left join从两个表中联合查询数据,以左表为主,右表为辅。如果左表中有的内容右表中没有,则用null填充,这是大家都很容易理解的。
2、右边有重复数据(多条数据对应左边表一条数据)时,右边的数据会全部保留,导致最终的结果出现重复关联。这时就要根据实际情况把右表的记录去重,比如使用distinct 、group by 等处理,最终结果也可以使用GROUP_CONCAT()、count()
等连接聚合函数处理