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

本文探讨了在SQL与R中进行表连接时,遇到的行数异常问题,即连接后表C的行数超出预期的情况。文章分析了问题的原因,包括ID字段在表B中的重复出现及表B行数多余表A的影响,并提供了通过去重操作解决问题的解决方案。
部署运行你感兴趣的模型镜像

举例

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 去重

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值