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

合并SQL表行,用已有值填充NULL值的通用方法

问题描述

现有如下结构的SQL表:

IdAB
1value1null
1nullvalue2

需要编写SELECT查询语句,返回如下结果:

IdAB
1value1value2

实际业务表包含更多行和列,需要通用解决方案。

通用解决方案

可以通过分组聚合实现,核心逻辑是按Id分组,用聚合函数提取各列的非null值。

基础实现SQL

SELECT 
    Id,
    MAX(A) AS A,
    MAX(B) AS B
    -- 其他列直接追加:MAX(列名) AS 列名
FROM your_table_name
GROUP BY Id;

关键说明

  • MAX()(或MIN())会自动忽略null值,只要同一Id分组内某列只有一个非null值,就能准确提取目标值,适配字符串、数值等多数数据类型
  • 针对更多列,只需在SELECT列表中依次添加MAX(列名) AS 列名,保持GROUP BY Id不变即可

扩展场景:同一列存在多个非null值

如果某列在同一分组内有多个非null值,需要合并结果的话,可使用对应数据库的字符串聚合函数:

  • MySQL:GROUP_CONCAT(DISTINCT A SEPARATOR ',') AS A
  • PostgreSQL:STRING_AGG(DISTINCT A, ',') AS A
  • SQL Server:STRING_AGG(DISTINCT A, ',') AS A

内容的提问来源于stack exchange,提问作者Cle Ine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:17:32