0

たとえば、私はこれらのテーブルを持っています...

ID | SCORE | DATE
 1 | 10    | 2-2-2012
 2 | 20    | 2-2-2012
 3 | 20    | 2-2-2012
 2 | 5     | 4-2-2012
 4 | 30    | 4-5-2012
 1 | 20    | 5-5-2012

各IDのスコアを最新の日付で取得したい。

私の期待出力は...

ID | SCORE | DATE
 1 | 20    | 5-5-2012
 2 | 5     | 4-2-2012
 3 | 20    | 2-2-2012
 4 | 30    | 4-5-2012

出来ますか?

前もって感謝します!

4

3 に答える 3

2

試す

SELECT id, score, date
FROM   table1 t1
WHERE  date=(SELECT MAX(t2.date)
              FROM table1 t2
              WHERE t1.id = t2.id);
于 2012-05-02T10:37:25.130 に答える
2
    SELECT t1.*
      FROM tbl t1
INNER JOIN (SELECT MAX(date) max_date,
                   id
              FROM tbl
          GROUP BY id) t2 ON t1.id = t2.id
                         AND t1.date = t2.max_date
于 2012-05-02T10:27:07.380 に答える
0

同じ ID を持つ 2 つの行の日付が同じ場合、トップ スコアを取得することを気にしない場合:

select *,max(DATE) as max_date FROM table group by ID order by max_date desc;
于 2012-05-02T10:33:47.827 に答える