Mysql 如何在课程分组时获得最大出生日期?
我遇到了一个问题,我要从学生表中的每门课程中选择最年轻的学生Mysql 如何在课程分组时获得最大出生日期?,mysql,sql,Mysql,Sql,我遇到了一个问题,我要从学生表中的每门课程中选择最年轻的学生 SELECT name, lastname, MAX(fdate) as 'Youngest', course FROM student GROUP BY course 结果: 此查询返回三个课程中的最高日期,但关联的名称错误。 这只是MySQL课程中的一项简单任务,我们不打算使用连接。尝试以下方法: SELECT s1.name, s1.lastname, s1-fdate FROM student s1 WHERE NOT
SELECT name, lastname, MAX(fdate) as 'Youngest', course
FROM student
GROUP BY course
结果:
此查询返回三个课程中的最高日期,但关联的名称错误。
这只是MySQL
课程中的一项简单任务,我们不打算使用连接。
尝试以下方法:
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)如果您不打算使用联接,那么可以使用内部选择
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
IMO这句话在语法上是错误的。至少对于像Oracle这样的其他数据库,您必须列出
分组依据
->分组依据名称、姓氏、课程
@user2989408 no。最年轻的是最近的日期=最长日期。老年人有古老的日期,这是最早的dates@hgoebl这是一个特殊的Mysql(mis)功能,您可以选择字段,而无需对字段进行分组。Mysql将只从组中的一行中选择一个值。这就是名称错误的原因。这是没有效率的。。如果表很大,执行起来会非常慢,执行计划就是选择max(出生日期)大于executesubselect的课程。可能是我错了,当你用where条件做一个子选择时,它会对外部选择中的每个选择进行选择。。。这意味着您正在进行选择以比较(外部选择表)学生表中每一行的结果。。。就这个问题而言,这可能是一个很好的解决方案,但总的来说,这种方法是一个糟糕的想法。虽然要达到我们现在的水平有点复杂。所有其他任务都很简单,只需从学生中选择*,其中fdate>“1990-1-1”等等。只是挑选一些小而简单的东西。