根据给定的行和列值从表中选择下n行

时间:2011-07-13 14:20:05

标签: sql postgresql

我目前正在尝试从表中获取下一个或前一个n行,下一个50为了参数的缘故。

我会知道一行,可能是数据中的任何位置,我想要根据时间戳列获得下一个50或前50个。问题是timestamp列不一定按顺序排列(尽管可能会有),因此数据中的下一行可能有错误的时间戳。

我认为最好的方法是创建一个临时表,丢弃给定行之前或之后的所有时间戳(取决于搜索上一个或下一个50),按时间戳排序,然后选择下一个/前50行?我不熟悉SQL基础知识。

提前致谢。

1 个答案:

答案 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