SQL如何将大表的Eggs字段值按匹配条件添加到较小的目标表
SQL关联查询实现表字段合并
首先我们先做如下表名假设(你可以根据实际表名替换即可):
- 包含
Name、Day字段的第一张表表名为user_day - 包含
Day、Eggs字段的第二张表表名为day_eggs
因为第二张表存在相同Day、Eggs的重复数据,直接关联会导致结果行数翻倍,所以我们需要先对第二张表按Day去重后再关联,具体SQL语句如下:
SELECT ud.Name, ud.Day, de.Eggs FROM user_day ud LEFT JOIN ( -- 对第二张表去重,得到每个Day对应的唯一Eggs值 SELECT DISTINCT Day, Eggs FROM day_eggs ) de ON ud.Day = de.Day;
如果业务上不需要保留第一张表中没有匹配到Eggs的记录,可以把LEFT JOIN替换为INNER JOIN,对你给出的示例数据而言两种写法输出结果完全一致。
如果实际场景中同一个Day对应多个不同的Eggs值,你可以根据需求调整子查询的聚合规则,比如求和用SELECT Day, SUM(Eggs) as Eggs FROM day_eggs GROUP BY Day即可。
内容的提问来源于stack exchange,提问作者Gops61
相关产品推荐
相关产品推荐

