group byを利用したSQLの書き方
前にもSQLの書き方について質問したのですが、どうも思いどおりの結果になりません。知恵をお貸しください。
このようなテーブルiq_resultが例えばあります。
handle time cat sex datetime,generation
もん 00:00:37 ハーフ 女 2006-11-02 20
まさ 00:00:43 ハーフ 男 2006-11-04 11:44:56 30
まさ 00:00:45 ハーフ 男 2006-11-04 11:28:59 40
名無しの権兵衛 00:00:43 ハーフ 男 2006-11-06 40
スズキ 00:00:44 ハーフ 女 2006-10-26 50
まさ 00:00:47 ハーフ 男 2006-10-26 17:53:30 30
これを「同じhandleがあった場合は、その人の一番timeが小さい
データを採用し」かつ
「timeが小さい順(同じ場合はdatetimeが小さい順)に並べ替えて」順位表を出したく思っています。
期待する結果は
もん 00:00:37 ハーフ 女 2006-11-02 20
まさ 00:00:43 ハーフ 男 2006-11-04 11:44:56 30
名無しの権兵衛 00:00:43 ハーフ 男 2006-11-06 40
スズキ 00:00:44 ハーフ 女 2006-10-26 50
になると思うのですが、
SELECT handle, min(time) as pnt, cat ,sex,datetime,generation,team FROM iq_result where cat = 'ハーフ' group by `handle` order by pnt , datetime
または
SELECT handle, min(time) as pnt, cat ,sex,min(datetime) as pnt2,generation,team FROM iq_result where cat = 'ハーフ' group by `handle` order by pnt , pnt2
でも以下のようになってしまいます。
もん 00:00:37 ハーフ 女 2006-11-02 20
まさ 00:00:43 ハーフ 男 2006-10-26 30
名無しの権兵衛 00:00:43 ハーフ 男 2006-11-06 40
スズキ 00:00:44 ハーフ 女 2006-10-26 50
つまり複数ある「まさ」のデータはtimeが最小の00:00:43を選ぶのですがそれに付随するdatetimeを別の列?から持ってきてしまいます。
何がおかしいのでしょうか?