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

如何将表中某列值设为同表中一周前对应行的另一列值

同表更新:将fldState设为对应日期提前一周的companyName值

需求说明:需要更新company_table表中的fldState列,让该列的值等于当前行日期提前7天的记录的companyName值。

原表示例

fldId | companyName |    date     | fldState
---------------------------------------------
  1   | adeco       | 2023-06-18  |  
  2   | mic         | 2023-06-17  |
  3   | manpower    | 2023-06-16  |
  4   | linar       | 2023-06-15  |
  5   | dlank       | 2023-06-14  |
  5   | test        | 2023-06-13  |
  5   | tesla       | 2023-06-12  |
  5   | apple       | 2023-06-11  |

更新后效果示例

fldId | companyName |    date     | fldState
---------------------------------------------
  1   | adeco       | 2023-06-18  |  tesla
  2   | mic         | 2023-06-17  |  apple
  3   | manpower    | 2023-06-16  |  ...
  4   | linar       | 2023-06-15  |
  5   | dlank       | 2023-06-14  |
  5   | test        | 2023-06-13  |
  5   | tesla       | 2023-06-12  |
  5   | apple       | 2023-06-11  |

解决方案

根据不同数据库类型,提供对应的SQL语句:

1. MySQL/MariaDB

使用自连接关联日期减7天的记录,通过LEFT JOIN确保无匹配记录时fldState设为NULL:

UPDATE company_table t1
LEFT JOIN company_table t2 
ON DATE_SUB(t1.date, INTERVAL 7 DAY) = t2.date
SET t1.fldState = t2.companyName;

2. PostgreSQL

利用INTERVAL语法实现日期偏移,同样使用自连接:

UPDATE company_table t1
SET fldState = t2.companyName
FROM company_table t2
WHERE t1.date - INTERVAL '7 days' = t2.date;

如果需要保留无匹配时的原有值(而非设为NULL),可以添加COALESCE:

UPDATE company_table t1
SET fldState = COALESCE(t2.companyName, t1.fldState)
FROM company_table t2
WHERE t1.date - INTERVAL '7 days' = t2.date;

3. SQL Server

使用DATEADD函数处理日期计算:

UPDATE t1
SET t1.fldState = t2.companyName
FROM company_table t1
LEFT JOIN company_table t2 
ON DATEADD(DAY, -7, t1.date) = t2.date;

逻辑说明

所有方案核心都是通过自连接将当前记录与日期提前7天的记录关联,直接把关联到的companyName赋值给当前行的fldState。如果某行没有对应的提前7天记录,fldState会保持为NULL(或原有值,取决于写法),和示例中的效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:05:11