Получить предыдущую дату и час из таблицы в SQLite - PullRequest
2 голосов
/ 14 января 2011

У меня следующая ситуация:

В таблице у меня есть 4 столбца:

CommentsTBL:
ID int
Data datetime
Hour Varchar
Comment Varchar

Столбец Hour имеет тип varchar, не спрашивайте меня, почему ....

Учитывая конкретную дату и час из таблицы, мне нужно найти предыдущую и следующую запись.Если я найду один из них (предыдущий или следующий), будет легко получить другой, используя ту же логику.

В качестве примера:

ID  Data        Hour    Comment
1.  2011-01-12  17:00   SomeComments1
2.  2011-01-14  10:00   SomeComments3
3.  2011-01-14  11:00   SomeComments4
4.  2011-01-13  14:00   SomeComments2

Предыдущая дата для ID 4 будет ID 1, а следующая будет ID 2.

Я нашел решениедля этого, но я хочу посмотреть, есть ли у кого-нибудь из вас что-то лучше, может быть, использовать только один SELECT.Это для предыдущего:

SELECT 
       Data,
       MAX(Hour) Hour
FROM 
       CommentsTBL
WHERE 
       Data in (SELECT 
                      MAX(Data) 
                FROM 
                      CommentsTBL
                WHERE 
                      Data < MyDate or (Data = MyDate and Hour < MyHour)
               )
GROUP BY
         Data

Спасибо.

1 Ответ

3 голосов
/ 14 января 2011

Почему бы и нет:

select *
  from ( SELECT data, hour from commentsTbl
          where data < mydate
             or ( data = mydate and hour < myhour )
          order by data desc, hour desc
          limit 1 
       )
 union all
select *
  from ( SELECT data, hour from commentsTbl
          where data > mydate
             or ( data = mydate and hour > myhour )
          order by data asc, hour asc
          limit 1
       )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...