使用group by和maximum

时间:2011-06-01 10:15:56

标签: sql tsql

我有一个帖子表和postcontent表。

每次编辑帖子时,都会在postcontent表中添加一个条目。

在每个这样的时间,一个名为version的字段将增加1 在postcontent表中。

如何从post post和[Description]到postcontent表获取PostId 每个帖子的版本最大 即按帖子ID分组 即我希望每个帖子都有一个原始文件,这是帖子的“最大版本”

3 个答案:

答案 0 :(得分:2)

select P.PostID,
       PC.[Description]
from Post as P
inner join 
  (
    select PostID,
           [Description],
           row_number() over(partition by PostID order by [Version] desc) as rn
    from PostContent
  ) as PC
  on P.PostID = PC.PostID
where PC.rn = 1

答案 1 :(得分:1)

我认为您将PostId表中的PostContent作为外键,并且您希望以最高版本检索所有postId

select max(version),PostId from PostContent groupby PostId

答案 2 :(得分:1)

SELECT 
    p.[PostID],
    pc.[Description]
FROM
    [Post] AS p
INNER JOIN
    [PostContent] AS pc
    on p.PostID = pc.PostID 
WHERE
    pc.[Version] = (SELECT MAX([Version]) FROM PostContent WHERE PostID = p.PostID)