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

SQL如何将同Id下分散在多行的各列值合并为单条唯一记录

合并同ID多行列值的实现方案

方案1:仅查询合并结果(不修改原表)

SQL的聚合函数会自动忽略NULL值,你当前场景下同ID每个列仅存在一个非空值,直接用MAX/MIN按ID分组查询即可拿到完整合并结果:

SELECT
  Id,
  MAX(row1) AS row1,
  MAX(row2) AS row2,
  MAX(row3) AS row3
FROM dbo.Examples
GROUP BY Id

执行后即可得到你需要的(1, 'Value1', 'Value1', 28)的查询结果。

方案2:清理原表数据,落地合并结果并加主键约束

如果需要将原表数据修改为合并后的状态,同时正式生效Id主键约束,按以下步骤操作:

  • 第一步:将合并后的数据存入临时表备份
SELECT
  Id,
  MAX(row1) AS row1,
  MAX(row2) AS row2,
  MAX(row3) AS row3
INTO #TempMergedExamples
FROM dbo.Examples
GROUP BY Id
  • 第二步:清空原表所有旧数据
TRUNCATE TABLE dbo.Examples
  • 第三步:将合并后的干净数据插回原表
INSERT INTO dbo.Examples (Id, row1, row2, row3)
SELECT Id, row1, row2, row3 FROM #TempMergedExamples
  • 第四步:为Id列添加主键约束,保证后续写入数据时Id全局唯一
ALTER TABLE dbo.Examples 
ADD CONSTRAINT PK_Examples_Id PRIMARY KEY CLUSTERED (Id)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:09:00