Mysql 如何选择组中最小值的行,同时使用where子句
我有一个跟踪课程出勤情况的表格。这些列是courseid、lesson、personid和date。我有一个查询(如下),提取一个人出现的最早日期以及相关的课程、课程和personid。这用于确定一个人何时开始某一特定课程,并确保他们从第一课开始。这很好,但我遇到的问题是,每个课程都要运行这个查询。例如,找到某一特定课程中每个人开始学习的第一天,而不是每门课程的第一天。现在我正在运行更一般的查询,并在业务层对其进行过滤 我把这一点弄糊涂了,所以请原谅我的打字错误:Mysql 如何选择组中最小值的行,同时使用where子句,mysql,sql,greatest-n-per-group,Mysql,Sql,Greatest N Per Group,我有一个跟踪课程出勤情况的表格。这些列是courseid、lesson、personid和date。我有一个查询(如下),提取一个人出现的最早日期以及相关的课程、课程和personid。这用于确定一个人何时开始某一特定课程,并确保他们从第一课开始。这很好,但我遇到的问题是,每个课程都要运行这个查询。例如,找到某一特定课程中每个人开始学习的第一天,而不是每门课程的第一天。现在我正在运行更一般的查询,并在业务层对其进行过滤 我把这一点弄糊涂了,所以请原谅我的打字错误: select a.course
select a.courseid,
a.lesson,
a.personid,
a.thedate
from (select personid,
min(thedate) as earliestdate
from attendance
group by personid) as x
inner join attendance as a on (a.personid = x.personid and a.thedate = x.thedate)
只需在内部查询中对person_id、course进行分组:
select a.courseid, a.lesson, a.personid, a.thedate
from (
select personid, courseid, min(thedate) as earliestdate
from attendance
group by personid, courseid
) as x
inner join attendance as a
on (a.personid = x.personid and
a.thedate = x.thedate and
a.courseid=x.course_id)
我有点怀疑。目前,所有信息都保存在单个数据对象/表中。如果我们有如下不同的数据模型,情况会怎样 目标1: