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

eh57zj3b  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(341)

我试图显示那些注册学习最长课程的学生的名字。要提供一些上下文,当命令:

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;

但这只显示了其中一个学生在上4年的课程。我也试过使用“极限3”,但不仅没有工作,这将感觉像一个创可贴修复。mysql中是否有其他类似于“max()”的函数,但会显示所有最大值(假设有多个值)?

3okqufwl

3okqufwl1#

从派生表中的所有指定课程(分配给学生)中获取总的最大持续时间值。
使用将此派生表联接到主表 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

相关问题