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

编写SELECT查询填充[Tags.1]列空值为对应ReourceID的唯一值

用SQL替换NULL值为对应资源ID的唯一非空标签值

问题描述

现有一张包含ReourceID和[Tags.1]列的表,其中[Tags.1]存在NULL值。需要编写SELECT查询,将每个NULL值替换为对应ReourceID的唯一非空[Tags.1]值。

原始数据:

ReourceID    [Tags.1]
1x           ws             
2x           NULL
1x           ws
3x           qs
2x           sg
4x           ee
3x           NULL
4x           NULL
2x           sg

期望结果:

ReourceID    [Tags.1]
1x           ws             
2x           sg
1x           ws
3x           qs
2x           sg
4x           ee
3x           qs
4x           ee
2x           sg 

解决方案

由于每个ReourceID对应的非空[Tags.1]值是唯一的,优先用窗口函数结合COALESCE()实现,性能更优:

SELECT 
    ReourceID,
    COALESCE([Tags.1], MAX([Tags.1]) OVER (PARTITION BY ReourceID)) AS [Tags.1]
FROM 你的表名;

如果你的SQL环境不支持窗口函数,也可以用关联子查询实现:

SELECT 
    t1.ReourceID,
    COALESCE(t1.[Tags.1], (SELECT MAX(t2.[Tags.1]) FROM 你的表名 t2 WHERE t2.ReourceID = t1.ReourceID)) AS [Tags.1]
FROM 你的表名 t1;

原理说明

  • PARTITION BY ReourceID:按ReourceID分组,为每组计算出唯一的非空[Tags.1]值(因值唯一,用MIN()替换MAX()结果一致)。
  • COALESCE():判断当前行的[Tags.1],若为NULL则替换为分组得到的唯一非空值,否则保留原值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:15:54