базы данных:Регистрация Его к предыдущей строке Ближайшей Даты
id | account | date | random_data
1 | 1 | 01/01/2013 | qw
2 | 2 | 05/01/2013 | er
3 | 2 | 09/01/2013 | ty
4 | 1 | 05/01/2013 | ui
5 | 2 | 11/01/2013 | op
6 | 1 | 12/01/2013 | as
Привет, так скажем, я хочу, чтобы записи, начиная с 05/01/2013 - обратите внимание, что prev_date для первой строки все еще показывает более раннюю дату, чем 05/01, что означает, что всю таблицу нужно искать.
Результат данные:
account | cur_date | random_data | prev_date | prev_rand_data
1 | 05/01/2013 | ui | 01/01/2013 | qw
1 | 12/01/2013 | as | 05/01/2013 | ui
2 | 05/01/2013 | er | null | null
2 | 09/01/2013 | ty | 05/01/2013 | er
2 | 11/01/2013 | op | 09/01/2013 | ty
Так что я не уверен, что это самый лучший, самый оптимизированный запрос я мог бы использовать для этого. Я не против php-решения, но не уверен, насколько это лучше. Некоторые идеи я рассмотрел:
- Какая-то присоединиться на одной и той же таблице - не знаю, как будто
подзапросы на избранных -
select date as cur_date , (select max(date) from table where date < cur_date group by account) as prev_date...
- это, кажется, что это может быть невероятно интенсивнымПеременные сеанса - установить переменную сеанса для каждой строки, которая будет предыдущими данными для следующей строки, например
select date as cur_date , @prev_date as prev_date , @prev_date:=date...
Кто-нибудь имел опыт работы с проблемой, как это и было хорошее решение? Есть ли положительные негативы с любыми идеями, которые у меня есть, которые могут вызвать проблемы в будущем?