我正在尝试对两个表执行SQL查询以检索具有特定列(PostID)的多个列是不同的(并且它不是该表的主键)。
此外,我需要选择不同的行是最新的(检索的列之一是输入日期)。
详细说明:
我正在构建一个类似应用程序的论坛,使用3个表来存储数据。
我使用table1存储用户详细信息,table2存储帖子的元数据,table3存储帖子详细信息,更新和回复(postID在table2中唯一指向原始帖子,而在table3中,使用它显示原始帖子以及更新和回复)。
表格列:
我正在尝试在gridview中检索1个用户的所有帖子,我的SQL查询使用USERID从表中检索他的所有帖子。但是,它正在检索原始帖子及其所有更新,我只想检索每个帖子的最新更新。
如何在SQL中完全完成(我知道我可以使用返回的结果在C#中完成)?
我的查询:
SELECT T1.FullName, T3.PostID, T3.EntryDate, T3.Title
FROM Table1 as T1, Table3 as T3
WHERE T3.UserID = T1.UserID
AND T3.UserID = @UserID
答案 0 :(得分:2)
您可以将GROUP BY PostID
与MAX(EntryDate)
答案 1 :(得分:1)
SELECT *
FROM (
SELECT posts.*, ROW_NUMBER() OVER (PARTITION BY post_updates.UserID, post_updates.PostID ORDER BY post_updates.EntryDate DESC) AS rn
FROM table1 users
JOIN table3 post_updates
ON post_updates.userID = users.UserID
WHERE users.UserID = @UserID
) q
WHERE rn = 1