2011-07-13 54 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 
相关问题