You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中避免矩阵式输出,将重复ID的多行数据合并为单行

解决MySQL多行非NULL值合并为单行的问题

刚好碰到过类似的场景,你可以用MySQL的聚合函数+分组来快速解决这个合并行的需求。

当前输出

IdLineL1_CL1_DL1_EL2_FL2_GL2_HL3_IL3_JL3_K
11testtetstesnullnullnullnullnullnull
12nullnullnulltestetstettsnullnullnull
13nullnullnullnullnullnullfgdfdfgffdg

预期输出

IdLineL1_CL1_DL1_EL2_FL2_GL2_HL3_IL3_JL3_K
11testtetstestestetstettsfgdfdfgffdg

解决方案SQL

核心思路是按Id分组,然后用MAX()(或MIN())函数提取每个列的非NULL值——因为聚合函数会自动忽略NULL,只保留有效的那个值。如果需要保留最小的Line号,用MIN(Line)即可:

SELECT
    Id,
    MIN(Line) AS Line,
    MAX(L1_C) AS L1_C,
    MAX(L1_D) AS L1_D,
    MAX(L1_E) AS L1_E,
    MAX(L2_F) AS L2_F,
    MAX(L2_G) AS L2_G,
    MAX(L2_H) AS L2_H,
    MAX(L3_I) AS L3_I,
    MAX(L3_J) AS L3_J,
    MAX(L3_K) AS L3_K
FROM your_table_name -- 替换成你的实际表名
GROUP BY Id;

逻辑说明

  • GROUP BY Id:将同一个Id的所有行归为一组,确保我们只处理同一实体的分散数据
  • MAX(column):由于每组内每个目标列只有一个非NULL值,MAX()会精准取出这个有效值;如果你的场景中某列可能有多个非NULL值,需要根据业务需求调整(比如用GROUP_CONCAT拼接)
  • MIN(Line):如果业务不需要保留Line列,直接去掉这一行即可;如果要保留最大的Line号,换成MAX(Line)就行

内容的提问来源于stack exchange,提问作者palani 03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:19:29