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

时间:2011-06-12 07:14:41

标签: c# asp.net sql sql-server tsql

我正在尝试执行一个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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我不确定我是否完全理解了您的问题,但如果您有线程ID(线程表中的主键),请尝试使用

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
ORDER BY t.id DESC
LIMIT 0, 1