SQL Server:如何选择多列,其中1列是不同的?

时间:2009-10-07 09:17:11

标签: asp.net sql-server database

我正在尝试对两个表执行SQL查询以检索具有特定列(PostID)的多个列是不同的(并且它不是该表的主键)。

此外,我需要选择不同的行是最新的(检索的列之一是输入日期)。

详细说明:

我正在构建一个类似应用程序的论坛,使用3个表来存储数据。

我使用table1存储用户详细信息,table2存储帖子的元数据,table3存储帖子详细信息,更新和回复(postID在table2中唯一指向原始帖子,而在table3中,使用它显示原始帖子以及更新和回复)。

表格列:

  • table1(UserID,FullName,mobile等)
  • table2(postID,UserID,EntryDate,Deleted columns)
  • table3(postdetailsId,PostID,UserID,Entrydate等)

我正在尝试在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

2 个答案:

答案 0 :(得分:2)

您可以将GROUP BY PostIDMAX(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