我正在尝试显示参加最长课程的学生的姓名。为了提供一些上下文,当命令:
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()'的函数,但假设有多个以上函数,它们会显示所有最大值?
答案 0 :(得分:2)
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