我有一张这样的桌子

id
1
2
4
5
6
10
11

一组连续的值,未知数量的缺失字段,然后是其他连续的值.

id stint
1 0
2 0
4 1
5 1
6 1
10 2
11 2

每次递增一次,我就可以用它对其他列求和.

推荐答案

如果你的MySQL版本支持窗口功能.

您可以try 在子查询中使用LAG窗口函数来获取之前的id列,然后使用SUM条件聚合窗口函数.

Query #1

SELECT Id,
       SUM(id - n_Id > 1) OVER(ORDER BY id) stint
FROM (
    SELECT *,LAG(id,1,id) OVER(ORDER BY id) n_Id 
    FROM T
) t1
Id stint
1 0
2 0
4 1
5 1
6 1
10 2
11 2

View on DB Fiddle

Mysql相关问答推荐

左联接重复问题

在MySQL中存储一条帖子的点赞数量

MySQL连接序列

用于搜索从各种表中获得的结果的查询

无法连接到扩展坞MySQL Unix套接字

获取最大登录应用程序用户数以及何时

如何计算具有权重属性的记录数

MySQL - 如何根据单列查找重复行?

仅计算 DATEDIFF (MySQL) 中的工作日

创建将列与多个值进行比较的索引

MySQL REGEXP 在没有 BINARY 模式的情况下区分大小写?

如何使用nodejs从mysql数据库中获取最新的10条记录?

如何在sql中挑出某些名称

If else on WHERE 子句

MySQL解释计划中 Select 优化的表的含义

WHERE 子句中的条件顺序会影响 MySQL 性能吗?

问号在 MySQL 中WHERE column = ?的意义是什么?

MySQL - 在 MySQL UPDATE 或 SELECT 查询中使用 If Then Else

将 JavaScript 到日期对象转换为 MySQL 日期格式 (YYYY-MM-DD)

如果另一列为空,则 Select 一列