[SQL]特定グループの各最大レコードを取得したい


どうも、まっきーです。

今回のやりたいことはこんな感じです。

↓↓↓↓↓こんなデータがあったとき↓↓↓↓↓
ID(主キー) NO(主キー) date
1 1 2015-12-10
1 2 2016-08-09
1 3 2016-09-05
2 1 2012-04-30
2 2 2013-10-10
3 1 2012-01-02


↓↓↓↓↓こんな感じでデータを取りたい↓↓↓↓↓
ID(主キー) NO(主キー) date
1 3 2016-09-05
2 2 2013-10-10
3 1 2012-01-02

要するにIDをグループとして、Noの最大値をとりつつ、IDとNoに紐付いたDATEも取得したい

これでどうでしょう。。
んー、これでは、dateカラムが正しく取得できないし、SQLが不正

こんなんええやん

「最大」を「他に当該値以下の値がない」と読むの術!
複合キーに限らず、同一グループ内で最大レコードを取りたい需要はあるのでは?

MySQL

Posted by まっきー