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()等连接聚合函数处理

 

posted @ 2021-11-25 11:39  xuzhujack  阅读(2627)  评论(0编辑  收藏  举报
;