如何合并两张MySQL表记录并生成含新增列的分组结果
解决方案:合并两张MySQL表并按侧边聚合信息
首先通过Serial字段关联两张表,再按用户分组,利用条件聚合分别提取左侧和右侧的保修日期与序列号,以下是实现的SQL语句:
SELECT t1.User_ID, t2.Name, MAX(CASE WHEN t2.Side = 'Left' THEN t1.Warranty END) AS `Left Warranty`, MAX(CASE WHEN t2.Side = 'Right' THEN t1.Warranty END) AS `Right Warranty`, MAX(CASE WHEN t2.Side = 'Left' THEN t1.Serial END) AS `Left Serial`, MAX(CASE WHEN t2.Side = 'Right' THEN t1.Serial END) AS `Right Serial` FROM table1 t1 JOIN table2 t2 ON t1.User_ID = t2.ID AND t1.Serial = t2.Serial GROUP BY t1.User_ID, t2.Name ORDER BY t1.User_ID DESC;
代码说明:
- 表关联:通过
User_ID(table1)与ID(table2)、Serial字段建立关联,确保每条设备记录匹配到对应的用户和侧边信息。 - 条件聚合:用
CASE WHEN配合MAX函数,分别筛选左侧、右侧的保修日期和序列号。由于每个用户的单个侧边仅对应一条记录,MAX会保留非空值,无对应侧边时返回NULL。 - 分组排序:按
User_ID和Name分组(每个用户对应唯一Name),最后按User_ID降序排列,与目标结果顺序一致。
执行该语句即可得到你需要的合并格式结果。
内容的提问来源于stack exchange,提问作者chris.cavage
相关产品推荐
相关产品推荐

