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

MySQL如何从下一行取值计算员工工作结束日期?

实现MySQL中根据下一行数据计算结束日期的方法

要实现根据下一行的ini_day值减1得到当前行的end_day,可以分两种情况处理,取决于你的MySQL版本:

方法一:使用窗口函数(MySQL 8.0及以上版本)

MySQL 8.0及以上支持窗口函数LEAD(),这是最简洁的实现方式:

SELECT 
    ID,
    Name,
    ini_day,
    LEAD(ini_day) OVER (ORDER BY ID) - 1 AS end_day
FROM 
    your_table_name;

说明:

  • LEAD(ini_day) OVER (ORDER BY ID):按照ID升序排序,获取当前行的下一行对应的ini_day值
  • 对获取到的下一行ini_day减1,就得到当前行的end_day;最后一行没有下一行,LEAD()会返回NULL,减1后结果仍为NULL,符合需求。

方法二:自连接实现(MySQL 5.x版本)

如果你的MySQL版本不支持窗口函数,可以通过自连接的方式实现:

SELECT 
    t1.ID,
    t1.Name,
    t1.ini_day,
    (t2.ini_day - 1) AS end_day
FROM 
    your_table_name t1
LEFT JOIN 
    your_table_name t2 ON t2.ID = t1.ID + 1
ORDER BY 
    t1.ID;

说明:

  • 通过左连接,将当前行的ID+1作为关联条件,匹配下一行的数据
  • 左连接保证最后一行(最大ID)无法匹配到下一行,因此end_day会是NULL,符合预期。

执行上述任意一种SQL,都能得到你预期的结果:

ID  | Name | ini_day | end_day
------------------------------
1   | Juan | 1       | 4
2   | Nora | 5       | 8
3   | Pepe | 9       | 11
4   | Lara | 12      | 17
5   | Alex | 18      | 19
6   | Lily | 20      | NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:26:03