2011-07-13 67 views
3

我目前正在嘗試從表中獲取下一個或前一個n行,下一個50個用於參數。根據給定的行和列值從表中選擇下一個n行

我會知道一行,它可能在數據中的任何地方,我會根據時間戳列來獲取下一個50或前50個。問題是時間戳列不一定按順序(儘管它可能會是),所以數據中的下一行可能會有錯誤的時間戳。

我想最好的辦法是創建一個臨時表,放棄給定行之前或之後的所有時間戳(取決於搜索前一個還是後一個50),按時間戳排序,然後選擇下一個/前一個50行?我不熟悉過去基本的SQL。

在此先感謝。

+0

表格沒有「訂單」,也沒有「下一個記錄」。表是無序的數據集。任何排序或定義的「下一個」是在你的數據查詢中定義的。 –

回答

4
SELECT * 
FROM mytable m 
WHERE (ts, id) < 
     (
     SELECT ts, id 
     FROM mytable mi 
     WHERE mi.id = :myid 
     ) 
ORDER BY 
     ts DESC, id DESC 
LIMIT 50 
相關問題