【发布时间】:2013-03-29 18:15:12
【问题描述】:
我目前正在使用此查询来尝试检索突出显示的行
“从 2012 年和 2013 年之间 dt_year 的成绩中选择 max(grades_id) GROUP BY student_id HAVING count(grades_id) >= 2”
然而它只是产生了
有什么方法可以检索整行而不是只检索grades_id?
【问题讨论】:
-
如果要检索突出显示的行,彼得勋爵给出的答案。
我目前正在使用此查询来尝试检索突出显示的行
“从 2012 年和 2013 年之间 dt_year 的成绩中选择 max(grades_id) 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/,也许我可以提供更优化的解决方案。
【讨论】: