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

如何在SQL中基于parameter_id更新同表不同版本的指定列数据?

基于parameter_id同步不同version的source_of_configuration值的SQL更新语句

我有一张SQL表,结构及数据如下:

idparameter_idsource_of_configurationis_deletedversion
11Standard01
22tblParamVal01
33TuningSheet01
44Standard01
55tblPTO01
61Standard02
72Standard02
83Standard02
94Standard02

需求:基于parameter_id,将version为2的记录的source_of_configuration列值更新为对应version为1的记录的该列值。

预期结果:

idparameter_idsource_of_configurationis_deletedversion
11Standard01
22tblParamVal01
33TuningSheet01
44Standard01
55tblPTO01
61Standard02
72tblParamVal02
83TuningSheet02
94Standard02

解决方案

方法1:自连接UPDATE(适用于MySQL、SQL Server)

UPDATE your_table t2
JOIN your_table t1 ON t2.parameter_id = t1.parameter_id
SET t2.source_of_configuration = t1.source_of_configuration
WHERE t2.version = 2
AND t1.version = 1;

说明:

  • 将表自关联,t1映射version=1的记录,t2映射version=2的记录
  • 通过parameter_id匹配同参数的不同版本
  • 仅更新t2中符合条件的记录

方法2:子查询UPDATE(适用于PostgreSQL、Oracle)

PostgreSQL版本:

UPDATE your_table t2
SET source_of_configuration = (
    SELECT t1.source_of_configuration
    FROM your_table t1
    WHERE t1.parameter_id = t2.parameter_id
    AND t1.version = 1
)
WHERE t2.version = 2;

Oracle版本:

UPDATE your_table t2
SET source_of_configuration = (
    SELECT t1.source_of_configuration
    FROM your_table t1
    WHERE t1.parameter_id = t2.parameter_id
    AND t1.version = 1
)
WHERE EXISTS (
    SELECT 1
    FROM your_table t1
    WHERE t1.parameter_id = t2.parameter_id
    AND t1.version = 1
)
AND t2.version = 2;

说明:

  • 子查询获取对应parameter_id下version=1的目标值
  • Oracle中添加EXISTS条件,避免因无对应version=1记录导致更新为NULL

验证建议

执行更新前,先运行以下查询确认待更新的数据:

SELECT t2.id, t2.parameter_id, t2.source_of_configuration AS old_value, t1.source_of_configuration AS new_value
FROM your_table t2
JOIN your_table t1 ON t2.parameter_id = t1.parameter_id
WHERE t2.version = 2
AND t1.version = 1;

注意替换语句中的your_table为实际表名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:57:44