2011-01-14 66 views
2

我有以下情況:獲取從表中以前的日期和時間SQLite中

在一個表中我有4列:

CommentsTBL: 
ID int 
Data datetime 
Hour Varchar 
Comment Varchar 

小時列是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 

謝謝。

回答

3

爲什麼不:

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 
     ) 
+0

優秀。我不知道SQLite中有LIMIT選項。謝謝。 – CristiC 2011-01-14 09:33:57

相關問題