MySQL - 如果最后一条记录高于之前的记录,则继续获取记录

时间:2011-02-23 19:38:59

标签: mysql stored-procedures

我不知道这个概念是否可行 - 可能是在存储过程中?

考虑一个两行表:

`id` (int) | `value` (int) | `date` (datetime)

让我们说这些行存在:

1 | 3  | 2011-02-18
2 | 5  | 2011-02-19
3 | 12 | 2011-02-20
4 | 7  | 2011-02-21
5 | 8  | 2011-02-22
6 | 10 | 2011-02-23

我试图找到趋势,人眼认识到最后三个值每天都在上升是相当明显的:7 - > 8 - > 10.是否可以获得保留在此模式中的行?

我认为存储过程可能能够顺序读取行并找到第一个模式(10> 8),然后继续检查直到它不再匹配该概念: (8> 7),但不是(7> 12)所以它会停止。

任何正确方向的建议都会非常有用。

1 个答案:

答案 0 :(得分:1)

set @was:=null; 

select id from 
(
  select 
    id, 
    @was as was, 
    value as now, 
    (@was:=value) 
    from the_table order by date
) as trends 
where was is not null and now<=was limit 1;