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

如何在SQL Server中用另一表匹配值更新表中的NULL值

用表B匹配值更新表A的NULL分组字段

我有表A,其中grouping列部分行值为NULL,需要通过id_col匹配表B,用表B对应的grouping值更新这些NULL项。

原始表A数据

id_colgrouping
001A
002B
003NULL
004A
005NULL
006B

表B数据

id_colgrouping
003A
005B

更新后期望的表A数据

id_colgrouping
001A
002B
003A
004A
005B
006B

解决方案

方法1:JOIN式更新(适配MySQL、PostgreSQL 9.2+、SQL Server)

UPDATE A
JOIN B ON A.id_col = B.id_col
SET A.grouping = B.grouping
WHERE A.grouping IS NULL;

方法2:子查询式更新(通用多数SQL数据库)

UPDATE A
SET grouping = (
    SELECT B.grouping
    FROM B
    WHERE B.id_col = A.id_col
)
WHERE A.grouping IS NULL
AND EXISTS (
    SELECT 1
    FROM B
    WHERE B.id_col = A.id_col
);

说明

  • 两种方法仅更新表A中grouping为NULL的行,不会覆盖已有有效值
  • EXISTS子句用于过滤掉表B中无匹配id_col的行,避免出现将NULL更新为NULL的无效操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:50:25