MySQL中的上一行值

时间:2014-12-28 21:34:27

标签: mysql sql date

我正试图找到一种从前一行检索值的方法。我想要做的是首先按日期1(最早的第一个)对行进行排序。然后,如果日期2晚于该列中的所有先前日期,我想拉出该行(加上第一个初始行)。我的服务器不支持LAG功能。我尝试过使用CTE的建议,但我的服务器似乎也没有意识到这一点。

我想要做的是检查按日期1排序后,第2行的Date_2是否>第1行的Date_2,如果是,则返回该行。

这是一个示例表。如您所见,ID与日期1的顺序不同。 ID Date 1 Date 2 1 2000-01-01 2010-01-01 2 2001-08-01 2013-06-01 3 2000-06-01 2011-01-01 4 1999-07-01 2010-12-01 5 2002-02-01 2012-12-01

所以在我的例子中,我希望返回这3条记录: ID Date_1 Date_2 Previous_max 4 1999-07-01 2010-12-01 NULL 3 2000-06-01 2011-01-01 2010-12-01 2 2001-08-01 2013-06-01 2011-01-01

不返回ID 1和5,因为日期1更晚,而日期2早于另一行(分别为4和2)。

1 个答案:

答案 0 :(得分:2)

您应该可以使用相关子查询执行此操作:

  select t.*,
         (select max(date_2) from table t2 where t2.date_1 < t.date_1) as prev_max
  from table t
  having prev_max is null or prev_max < date_2;