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 に答える