mysql-如果表中有多个具有相同值的条目,如何显示所有最大值?

时间:2018-10-18 21:37:37

标签: mysql

我正在尝试显示参加最长课程的学生的姓名。为了提供一些上下文,当命令:

SELECT s.student_name, c.duration 
FROM course_table c 
JOIN student_table s 
ON s.course_id = c.course_id;

已运行,它将显示:

+---------------+----------+
| student_name  | duration |
+---------------+----------+
| John Smith    |        4 |
| Alan O'Brien  |        4 |
| Sarah Murphy  |        3 |
| Sean Mulligan |        4 |
+---------------+----------+

我用过:

SELECT s.student_name, MAX(c.duration) 
FROM course_table c 
JOIN student_table s 
ON s.course_id = c.course_id;

,但这仅显示其中一名正在学习四年制课程的学生。我也尝试过使用“限制3”,但不仅不起作用,而且感觉像是创可贴。 MySQL中是否还有其他类似于'MAX()'的函数,但假设有多个以上函数,它们会显示所有最大值?

1 个答案:

答案 0 :(得分:2)

  • Derived Table中的所有分配的课程(分配给学生)中获取最大持续时间总值。
  • 使用duration将此派生表加入主表。

尝试以下操作:

SELECT s.student_name,
       c.duration
FROM   course_table c
       JOIN student_table s
         ON s.course_id = c.course_id
       JOIN (SELECT Max(c2.duration) AS max_duration
             FROM   course_table c2
                    JOIN student_table s2
                      ON s2.course_id = c2.course_id) AS dt
         ON dt.max_duration = c.duration