我有一个名为“friendbook_post”的表,其中包含以下字段:text
,id
,type
,author
,date_time
。
表中有许多条目。
现在我想获取每位作者(如果存在)的第二篇文章(根据时间)以及作者ID(作者)和日期。
我尝试了很多查询,但没有任何帮助。
答案 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 ASC
。 2
可以替换为任何n
。请注意,如果作者没有第二篇帖子,则上述查询将不会返回该作者的任何内容。
希望这有帮助。