私のテーブルは次のようになります。
id | user_id | period_id | completed_on
----------------------------------------
1 | 1 | 1 | 2010-01-01
2 | 2 | 1 | 2010-01-10
3 | 3 | 1 | 2010-01-13
4 | 1 | 2 | 2011-01-01
5 | 2 | 2 | 2011-01-03
6 | 2 | 3 | 2012-01-13
... | ... | ... | ...
すべてのユーザーが同じ期間エントリを持っているわけではないことを念頭に置いて、最新のユーザー期間エントリのみを選択したいと思います。
基本的に(私が持っているのは上記の表だけだと仮定して)これを取得したい:
id | user_id | period_id | completed_on
----------------------------------------
3 | 3 | 1 | 2010-01-13
4 | 1 | 2 | 2011-01-01
6 | 2 | 3 | 2012-01-13
以下のクエリは両方とも、常に最初のuser_idオカレンスが選択された結果であり、最新のものではありません(順序付けは、私が理解しているものから行が選択された後に行われるため)。
SELECT
DISTINCT user_id,
period_id,
completed_on
FROM my_table
ORDER BY
user_id ASC,
period_id DESC
SELECT *
FROM my_table
GROUP BY user_id
ORDER BY
user_id ASC,
period_id DESC