【问题标题】:How can I retrieve an entire row of a MAX query?如何检索 MAX 查询的整行?
【发布时间】:2013-03-29 18:15:12
【问题描述】:

我目前正在使用此查询来尝试检索突出显示的行

“从 2012 年和 2013 年之间 dt_year 的成绩中选择 max(grades_id) GROUP BY student_id HAVING count(grades_id) >= 2”

然而它只是产生了

有什么方法可以检索整行而不是只检索grades_id?

【问题讨论】:

  • 如果要检索突出显示的行,彼得勋爵给出的答案。

标签: sql database


【解决方案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)

【讨论】:

    【解决方案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/,也许我可以提供更优化的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多