如何为每个用户获取5条最新评论(SQL Server的SQL查询)?

myf*_*ums 6 sql sql-server

我有一个看起来像这样的表:comment_id,user_id,comment,last_updated.

Comment_id是这里的关键.每个用户可能有多个评论.

如何为每个用户获取5条最新评论(SQL Server的SQL查询)?

输出应该与原始表类似,只是将用户的注释限制为每个用户最近的5个.

Joe*_*lli 10

假设至少SQL Server 2005,您可以使用窗口函数(row_number)和CTE:

;with cteRowNumber as (
    select comment_id, user_id, comment, last_updated, ROW_NUMBER() over (partition by user_id order by last_updated desc) as RowNum
        from comments
)
select comment_id, user_id, comment, last_updated
    from cteRowNumber
    where RowNum <= 5
    order by user_id, last_updated desc
Run Code Online (Sandbox Code Playgroud)

  • @myforums:这是**IS**标准的ANSI SQL语法! (2认同)