如何在mysql中获得相同列值的两个连续行值之间的差异

时间:2017-03-24 17:48:48

标签: mysql sql

id    height    month
276     64       4
276     64       5
276     55       6
298     70       4
298     61       5
299     74       4
351     63       4
351     54       5
351     67       6

对于相同的id列:对于month列的增加值,必须在height列中增加值或等于前一个值,选择所有不满足此条件的行。 我的意思是说选择行号:= 3,5,8

1 个答案:

答案 0 :(得分:1)

一种方法是使用相关子查询:

select *
from t
where height < (
        select height
        from t t2
        where t.id = t2.id
            and t.month > t2.month
        order by month desc limit 1
        )

产地:

id  height  month
276 55      6
298 61      5
351 54      5

Demo

工作原理:

LIMIT用于获取上个月的高度。它与order by子句组合使用,并根据给定的顺序生成第一行。在我们的例子中,我们已经过滤了当前月份大于或等于当月的月份,按照降序月份的顺序排序,并使用limit从第一行取高度 - 有效地创建了分区{{1}其他数据库中存在的功能。