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

如何通过SQL根据相同Col1值填充Col3的空值?

用同组非空值填充Col3空值的解决方案

原始数据

Col 1.Col 2Col 3
Apple2021
Pears2021
Apple20202
Pears2020207
Banana2017272

期望结果

Col 1.Col 2Col 3
Apple20212
Pears2021207
Apple20202
Pears2020207
Banana2017272

方法1:窗口函数(推荐)

这是最简洁高效的方式,适用于支持窗口函数的现代SQL数据库(MySQL 8.0+、PostgreSQL、SQL Server等)。通过分组取同组非空Col3值来填充空值:

SELECT 
    `Col 1.`,
    Col2,
    COALESCE(Col3, MAX(Col3) OVER (PARTITION BY `Col 1.`)) AS Col3
FROM your_table_name;

逻辑很直接:MAX(Col3) OVER (PARTITION BY \Col 1.`)会为每个Col 1.分组提取出该组的非空Col3值(每个分组只有一个非空值,MAX结果就是它),COALESCE`自动把空值替换成这个值,非空值保持原样。

方法2:修正自连接写法

如果你之前尝试自连接没成功,大概率是连接逻辑有问题。试试这个写法:

SELECT 
    t1.`Col 1.`,
    t1.Col2,
    COALESCE(t1.Col3, t2.Col3) AS Col3
FROM your_table_name t1
LEFT JOIN (
    -- 先筛选出每个分组的非空Col3值,确保每个分组只返回一行
    SELECT `Col 1.`, MAX(Col3) AS Col3
    FROM your_table_name
    WHERE Col3 IS NOT NULL
    GROUP BY `Col 1.`
) t2 ON t1.`Col 1.` = t2.`Col 1.`;

子查询先按Col 1.分组,取出每个组的非空Col3值(用MAX是为了避免分组有多个非空值时返回多行),然后左连接到原表,用COALESCE替换空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:55:15