現在、強調表示された行を取得するためにこのクエリを使用しています
"成績から max(grades_id) を選択します WHERE dt_year BETWEEN 2012 AND 2013 GROUP BY student_id HAVING count(grades_id) >= 2"
しかし、それは譲歩するだけです
grades_id だけではなく、行全体を取得する方法はありますか?
次のように、既存のクエリをサブクエリとして使用して必要な行を決定し、それらのすべての列を選択するだけです。
select * from grades where grades_id in (Select max(grades_id) from grades WHERE dt_year BETWEEN 2012 AND 2013 GROUP BY student_id HAVING count(grades_id) >= 2)
クエリ:
SELECT g.*
FROM grades g
WHERE g.grades_id = (SELECT MAX(g1.grades_id)
FROM grades g1
WHERE g1.dt_year BETWEEN 2012 AND 2013
AND g1.student_id = g.student_id
HAVING count(g1.grades_id) >= 2)
http://sqlfiddle.com/にデータを挿入できれば、より最適なソリューションを提供できるかもしれません。