0

TABLE.PNG

現在、強調表示された行を取得するためにこのクエリを使用しています

"成績から max(grades_id) を選択します WHERE dt_year BETWEEN 2012 AND 2013 GROUP BY student_id HAVING count(grades_id) >= 2"

しかし、それは譲歩するだけです

結果.PNG

grades_id だけではなく、行全体を取得する方法はありますか?

4

2 に答える 2

1

次のように、既存のクエリをサブクエリとして使用して必要な行を決定し、それらのすべての列を選択するだけです。

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)
于 2013-03-29T08:49:01.520 に答える
0

クエリ:

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/にデータを挿入できれば、より最適なソリューションを提供できるかもしれません。

于 2013-03-29T08:48:31.737 に答える