У меня есть следующий выбор в моей базе данных mysql:
select t.col1, t.THE_DATE, (select ?? as PREVIOUS_DATE)
from DUMMY_TABLE t
order by date
То, что я пытаюсь достичь, - это "PREVIOUS_DATE" содержать значение столбца предыдущей строки "THE_DATE", если оно есть.
Поэтому, если DUMMY_TABLE имеет данные:
col1 THE_DATE
x 10-01-2010
x 10-01-2012
x 10-01-2009
мой выбор должен вернуться
col1 THE_DATE PREVIOUS_DATE
x 10-01-2009
x 10-01-2010 10-01-2009
x 10-01-2012 10-01-2010
В subquery
с предложением limit
вам нужен order by
:
select t.col1, t.the_date,
( select t1.the_date
from dummy_table t1
where t1.col = t.col and
t1.the_date < t.the_date
order by t1.the_date desc
limit 1
) as PREVIOUS_DATE
from dummy_table t
order by the_date;
0, 1, 2, 2, 3, 4
и вы запрашиваете предыдущие цифры, вы получаете NULL, 0, 1, 1, 2, 3
. Оба 2
считают, что непосредственно предшествующее значение равно 1
. Все хорошо? Ну, это для вас, чтобы определить.