如何在课程分组时获得最大出生日期?

时间:2014-03-13 16:09:35

标签: mysql sql

我遇到了这个问题,我将在学生表中选择每个课程中最年轻的学生。

SELECT name, lastname, MAX(fdate) as 'Youngest', course  
FROM student
GROUP BY course

结果:http://i.imgur.com/9mx5Mfy.png

此查询返回三个课程中的最高日期,但关联的名称是错误的。 这只是MySQL课程中的一项简单任务,我们不会使用JOINs.

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT s1.name, s1.lastname, s1-fdate
FROM student s1
WHERE NOT EXISTS (
    SELECT 'YOUNGEST'
    FROM student s2
    WHERE s2.course = s1.course
    AND s2.fdate > s1.fdate
)

在这个查询中,我想在同一课程(s2.course = s1.course)的学生中检索最年轻的(s2.fdate> s1.fdate)

答案 1 :(得分:0)

如果您不打算使用JOIN,那么您可以使用内部选择

select
  A.course_name as "Name", 
  max(A.day_of_birth) as "Birth date", 
  (select 
     student_name 
   from students 
   where course_name = A.course_name and day_of_Birth=max(A.day_of_birth) limit 1
  ) as "who"
from students A
group by A.course_name

http://sqlfiddle.com/#!2/79a19/13/0