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

SQL Server:根据指定ID批量更新同员工后续薪资

解决指定ID对应员工后续薪资记录的更新问题

原始表结构与数据

假设表名为salary_records,数据如下:

Id EmployeeId Salary Date
1  11         100    2022-12-01
2  11         111    2023-01-01
3  11         NULL   2023-02-01
4  22         200    2023-02-01 
5  22         222    2023-03-01
6  22         NULL   2023-04-01

需求说明

输入ID列表(2, 5),需找到与这些ID对应行同EmployeeId且Date大于对应行Date的记录,将它们的Salary设置为对应行的Salary。

解决方案

使用UPDATE + JOIN的方式实现,这种方式比子查询更直观高效,适合新手理解:

MySQL 语法

UPDATE salary_records t1
JOIN (
    -- 先筛选出目标ID对应的员工、薪资和基准日期
    SELECT EmployeeId, Salary, Date AS target_date
    FROM salary_records
    WHERE Id IN (2, 5)
) t2 ON t1.EmployeeId = t2.EmployeeId
SET t1.Salary = t2.Salary
-- 只更新日期晚于基准日期的记录
WHERE t1.Date > t2.target_date;

SQL Server 语法

如果使用SQL Server,语法略有调整:

UPDATE t1
SET t1.Salary = t2.Salary
FROM salary_records t1
JOIN (
    SELECT EmployeeId, Salary, Date AS target_date
    FROM salary_records
    WHERE Id IN (2, 5)
) t2 ON t1.EmployeeId = t2.EmployeeId
WHERE t1.Date > t2.target_date;

执行后结果

执行上述语句后,表数据将变为预期结果:

Id EmployeeId Salary Date
1  11         100    2022-12-01
2  11         111    2023-01-01
3  11         111    2023-02-01
4  22         200    2023-02-01 
5  22         222    2023-03-01
6  22         222    2023-04-01

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:05:14