首页/数据/SQL 速查/LEAD 取下一行值
本包目录(311 条)
查询基础33 条连接与子查询40 条
聚合与窗口函数54 条
函数速查60 条变更与事务52 条性能与执行计划72 条

LEAD 取下一行值

取当前行之后第 N 行的值:计算截止时间、下次登录间隔、流程步骤耗时等场景。

SQL 速查数据更新于 2026-10-12

示例

示例
SELECT id, started_at,
       LEAD(started_at) OVER (ORDER BY started_at) AS next_started,
       TIMESTAMPDIFF(SECOND, started_at,
                     LEAD(started_at) OVER (ORDER BY started_at)) AS gap_seconds
FROM jobs
ORDER BY started_at;
语法LEAD(expr [, offset [, default]])
末行超出范围返回默认值或 NULL
PG 写法时间差改用 next_started - started_at

易错点

  • TIMESTAMPDIFF 是 MySQL 函数,PostgreSQL 用时间戳相减或 EXTRACT(EPOCH FROM …),迁移时改写
  • 末行 LEAD 为 NULL,参与运算会让整行结果为 NULL,按需 COALESCE

数据来源与参考

  • MySQL 8.0 Reference Manual · LEAD
  • PostgreSQL Documentation · Window Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌