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

SQL Server中如何用UPDATE语句更新Products表剩余行的owning_project值

解决方案:更新Products表的owning_project字段

先把你提供的表结构和数据用清晰的Markdown表格展示出来:

product_idproduct_revprojectowning_project
1aaap1p1
1baanullp1
1caanullp1
2dddp2p2
2eeenullp2
2kkknullp2
3fffp3p3
3gggp3p3
3hhhnullp3
3iiinullp3
4zzznullp4
4tttp4p4
4rrrnullp4

从现有数据的规律来看,你的需求应该是:对同一个product_id下的所有记录,只要该product_id存在任意一条project字段非空的记录,就把该组所有记录的owning_project统一设置为这个非空的project值(毕竟每个product_id对应的非空project值是唯一的)。下面给你不同数据库的实现方案:

MySQL 实现语句

UPDATE Products p
JOIN (
    -- 先拿到每个product_id对应的非空project值
    SELECT product_id, MAX(project) AS target_project
    FROM Products
    WHERE project IS NOT NULL
    GROUP BY product_id
) AS proj ON p.product_id = proj.product_id
SET p.owning_project = proj.target_project;

PostgreSQL 实现语句

PostgreSQL用UPDATE ... FROM语法:

UPDATE Products p
SET owning_project = proj.target_project
FROM (
    SELECT product_id, MAX(project) AS target_project
    FROM Products
    WHERE project IS NOT NULL
    GROUP BY product_id
) AS proj
WHERE p.product_id = proj.product_id;

逻辑说明

  1. 子查询通过GROUP BY product_id筛选出每个产品ID对应的非空project值(因为同一product_id下非空project唯一,用MAX或MIN都能准确拿到这个值);
  2. 主查询通过product_id关联原表和子查询结果,批量更新所有对应记录的owning_project字段。

执行完后,所有product_id对应的记录owning_project都会和该组的非空project保持一致,和你给出的示例数据最终状态完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:50:29