我有一个表,它遵循以下结构:
表foo
id number
---------------------
1 5
2 8
3 3
4 67
5 1
6 10
从这个表中,我想执行一个 SELECT
这显示了从一行到下一行增长最多的数字。在这个例子中,我想把它看作一个输出:
id number
---------------------
4 67
因为上一行 id = 3
)有一个 number
的价值 3
,下一行将值增加到 67
.
我该怎么做?
3条答案
按热度按时间xqk2d5yq1#
对示例数据执行此操作的一种方法是使用自联接:
如果id之间存在间隙,则必须找到每个id的前一个id,然后检索前一行中的编号:
或:
对于mysql 8.0+,可以使用lag()窗口函数:
请看演示。
8gsdolmq2#
可能有漏洞,我使用的是mysql 5.7–user157629
如果有两对具有相同且最大的增长,那么最小的一行
id
将被退回。小提琴
ycggw6v23#
也许是这样,但我想我把事情复杂化了