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

MySQL如何查找连续行Value差值不等于1的记录

问题描述

现有数据表:

IDValue
13
24
36
47
58
611
712

需要找出连续两行Value字段差值不等于1的记录,返回前一行的ID以及差值。期望结果如下:

IdDifference
22
53

当前使用cPanel中的MySQL,需解决该问题。

解决方案

方法1:使用窗口函数(MySQL 8.0+ 支持)

利用LEAD()窗口函数获取下一行的Value,计算差值后筛选:

SELECT 
    ID AS Id,
    (LEAD(Value) OVER (ORDER BY ID) - Value) AS Difference
FROM 
    your_table_name
HAVING 
    Difference != 1;
  • LEAD(Value) OVER (ORDER BY ID):按ID排序,取当前行下一行的Value值
  • 计算两行Value的差值并命名为Difference
  • 使用HAVING筛选差值不等于1的记录(因为Difference是计算字段,WHERE无法直接引用)

方法2:自连接(兼容低版本MySQL)

如果你的MySQL版本不支持窗口函数,可通过自连接关联连续行:

SELECT 
    t1.ID AS Id,
    (t2.Value - t1.Value) AS Difference
FROM 
    your_table_name t1
JOIN 
    your_table_name t2 ON t2.ID = t1.ID + 1
WHERE 
    (t2.Value - t1.Value) != 1;
  • 通过t2.ID = t1.ID + 1关联当前行和下一行
  • 计算差值并筛选不符合条件的记录
  • 注意:此方法要求ID是连续无缺失的,否则会遗漏部分记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:22:41