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

如何通过SQL将同一ID的多记录按条件合并为单行结果

解决方案:将多行同ID记录合并为单行结构化数据

直接用条件聚合函数(CASE 搭配聚合函数如 MAX)就能实现需求,比自连接写法更简洁高效,具体实现如下:

假设原表名为 user_attributes,结构示例:

IDTypeValueValue2
1Age25NULL
1Height175NULL
1NameNULLAlice
2Age30NULL
2NameNULLBob

实现SQL代码:

SELECT
    ID,
    -- 提取Name类型对应的Value2字段值
    MAX(CASE WHEN Type = 'Name' THEN Value2 END) AS Name,
    -- 提取Age类型对应的Value字段值
    MAX(CASE WHEN Type = 'Age' THEN Value END) AS Age,
    -- 提取Height类型对应的Value字段值
    MAX(CASE WHEN Type = 'Height' THEN Value END) AS Height
FROM user_attributes
GROUP BY ID;

代码说明:

  • CASE 语句根据Type字段匹配对应的取值逻辑,不匹配的情况返回NULL
  • MAX 聚合函数会过滤掉NULL值,只保留当前ID下对应Type的唯一有效值(如果同一ID同一Type有多条记录,MAX会取最大的那个值;如果需要保留所有值,可以换成GROUP_CONCAT(MySQL)或STRING_AGG(SQL Server/PostgreSQL))
  • 最后通过GROUP BY ID将同一ID的所有记录合并为单行

对比自连接的优势:

自连接需要多次关联表(比如左连三次分别获取Name、Age、Height),代码冗长且性能不如聚合函数,尤其是数据量较大时,条件聚合的执行效率更高。

内容的提问来源于stack exchange,提问作者Ollie G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:40:25