0

我有这张表:
Thread(ThreadID, ThreadType, PostDate, PostTime, Topic, Detail, UserID)
Primary key = ThreadID, Foreign Key = UserID
我想从每个用户那里检索最新的帖子以及他们的帖子详细信息,我尝试以下语句

 --Without Posting details  
SELECT UserID, MAX(PostTime) AS lastPost  
FROM Thread  
GROUP BY UserID  
ORDER BY UserID  

--With Posting details  
SELECT UserID, ThreadID, MAX(PostTime) AS lastPost  
FROM Thread   
GROUP BY UserID, ThreadID  
ORDER BY UserID  

但是结果返回似乎不同,第一个应该是正确的,因为它返回每个用户的最新帖子(结果中的 UserID 不重复),但第二个返回每个用户的每个帖子(重复的 UserID)。
我想知道为什么,因为我想检索每个用户的最新帖子以及他们的帖子详细信息

4

2 回答 2

3
select *
from (
  SELECT UserID, 
         ThreadId, 
         PostTime,
         ThreadType,
         Topic, 
         Detail,
         row_number() over (partition by userid order by posttime desc) as rn
  FROM Thread  
) t
where rn = 1
order by userid;
于 2013-07-15T11:46:40.390 回答
0

尝试这个:

    SELECT T1.UserID, T1.ThreadID, T1.PostTime AS LastPost  
    FROM Thread T1
    WHERE T1.PostTime = 
    (
    SELECT MAX(T2.PostTime)
    FROM Thread T2
    WHERE T2.UserID = T1.UserID
          AND T2.ThreadID = T1.ThreadID
    )
于 2013-07-16T09:36:26.677 回答