leftjoin/innerjoin以后数据条数比原数据表多的原因及解决办法

发布时间 2024-01-12 11:39:17作者: 盘思动

举例
A 表(1500行)是用户id和对应年龄,B 表(5000行)是用户id 和对应的爱好(如果有多个爱好就会出现多行数据),现在想通过用户id来链接这两张表,使用 left join(A,B)或者 inner join
结果连完发现生成了一张 3000行的表C(但理论上行数应该小于等于表 A)

问题原因
在 R 中发生这种问题,很大原因是两张表拿来连接的字段(比如用户id),在第二张表里面出现了多次,或者在第一张表里也有重复只
在 SQL 中发生这种问题,还有一种可能性是因为表 B 行数比表 A 多,所以会导致表 C 行数高于表 A

解决办法
首先,可以明确的是多出来的这些行是重复值,不是什么错误值,所以不需要太慌,无论是在R 还是 SQL中,发生这种问题都可以直接去重解决
在R中的代码,group_by 配合 summarize 去重
在SQL中的代码,group_by 去重

————————————————
版权声明:本文为CSDN博主「猛狗哭泣」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Yann_YU/article/details/107230066