如何获取第n个最近值?

时间:2014-11-01 04:41:38

标签: sql database oracle

我有一个名为“friendbook_post”的表,其中包含以下字段:textidtypeauthordate_time。 表中有许多条目。

现在我想获取每位作者(如果存在)的第二篇文章(根据时间)以及作者ID(作者)和日期。

我尝试了很多查询,但没有任何帮助。

1 个答案:

答案 0 :(得分:2)

您需要使用分析函数(在本例中为ROW_NUMBER())以及子查询:

SELECT * FROM (
    SELECT text, id, type, author, date_time, ROW_NUMBER() OVER ( PARTITION BY author ORDER BY date_time DESC ) AS the_post_num
      FROM friendbook_post
) WHERE the_post_num = 2

这将是第2个最新帖子(最近的第2个)。如果你想获得第二个最早的帖子,那么ORDER BY date_time ASC2可以替换为任何n。请注意,如果作者没有第二篇帖子,则上述查询将不会返回该作者的任何内容。

希望这有帮助。