0

我对此表结果有一个看法:

id   date         text     name     othertext
--- |-------------|-------|--------|---------
14  | 2013/02/01  | text1 | john   | 399 
14  | 2013/02/02  | text2 | john   | 244
14  | 2013/02/03  | text3 | john   | 555
14  | 2013/02/04  | text4 | john   | 300
13  | 2013/02/05  | text5 | juliet | 200
12  | 2013/02/06  | text6 | borat  | 500
12  | 2013/02/07  | text7 | borat  | 600
10  | 2013/02/08  | text8 | Adam   | 700
10  | 2013/02/09  | text9 | Adam   | 700

它就像一个评论系统。每个用户可以在不同的帖子中发表评论(“id”是帖子的 id)。我想获得最后评论的帖子列表,按日期排序,但我不想获得发表评论的用户的重复姓名。

这是我想要的结果:

id   date          text    name     othertext
--- |-------------|-------|--------|---------
10  | 2013/02/09  | text9 | Adam   | 700 
12  | 2013/02/07  | text2 | borat  | 600
13  | 2013/02/05  | text5 | juliet | 200
14  | 2013/02/04  | text4 | john   | 300

最后:我想知道最后评论但没有重复的帖子的id。

非常感谢!!!!

4

2 回答 2

2

有很多方法可以实现您想要的。既然是SQL Server,您可以使用排名功能,例如ROW_NUMBER()

SELECT  id, date, text, name, othertext
FROM    
        (
            SELECT  id,date,text,name,othertext,
                    ROW_NUMBER() OVER (PARTITION BY ID ORDER BY date DESC) rn
            FROM    tableName
        ) a
WHERE   rn = 1
ORDER   BY id
于 2013-09-12T09:43:20.917 回答
1
select t.*
from your_table t
inner join 
(
   select id, max(date) as mdate
   from your_table
   group by id
) x on x.id = t.id and t.date = x.mdate
order by t.date desc
于 2013-09-12T09:42:36.520 回答