SQL Server - 如何为每个用户选择最新记录?

Mat*_*001 4 c# sql t-sql sql-server asp.net

我正在尝试执行一个SQL命令,该命令应该在输入数据库的最后一行上绘制.

基本上,当用户提交最后一个帖子时(就像在这个论坛中一样),它会将用户重定向到一个页面,其中包含他的主题标题,主题段落和数据,例如用户名和提交主题的时间.

我开始致力于声明:

SELECT @UserID, u.UsersName, t.ThreadTitle, t.ThreadParagraph
FROM Users as u
INNER JOIN Threads as t ON u.UserID = t.UserID
Where @UserID = t.UserId
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我需要添加一些语句或聚合函数来返回我在线程表中输入的最后一行.我该怎么做呢?我需要添加什么?

Ale*_*Aza 9

在MS SQL中,您可以使用TOP 1此命令,您还需要按创建的日期时间列降序排序.

SELECT TOP 1 @UserID, u.UsersName, t.ThreadTitle, t.ThreadParagraph
FROM Users as u
    INNER JOIN Threads as t ON u.UserID = t.UserID
Where @UserID=t.UserId
ORDER BY [YourDateTimeFiled] DESC
Run Code Online (Sandbox Code Playgroud)

  • Matrix001 - `ORDER BY`将订购,因此具有最大日期时间的列将是第一个.`TOP 1`将确保忽略所有其他行.另外,根据我的理解,当你用具体的用户`@ UserID = t.UserId`过滤时,其他用户做什么并不重要,对吗? (3认同)