Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何选择组中最小值的行,同时使用where子句_Mysql_Sql_Greatest N Per Group - Fatal编程技术网

Mysql 如何选择组中最小值的行,同时使用where子句

Mysql 如何选择组中最小值的行,同时使用where子句,mysql,sql,greatest-n-per-group,Mysql,Sql,Greatest N Per Group,我有一个跟踪课程出勤情况的表格。这些列是courseid、lesson、personid和date。我有一个查询(如下),提取一个人出现的最早日期以及相关的课程、课程和personid。这用于确定一个人何时开始某一特定课程,并确保他们从第一课开始。这很好,但我遇到的问题是,每个课程都要运行这个查询。例如,找到某一特定课程中每个人开始学习的第一天,而不是每门课程的第一天。现在我正在运行更一般的查询,并在业务层对其进行过滤 我把这一点弄糊涂了,所以请原谅我的打字错误: select a.course

我有一个跟踪课程出勤情况的表格。这些列是courseid、lesson、personid和date。我有一个查询(如下),提取一个人出现的最早日期以及相关的课程、课程和personid。这用于确定一个人何时开始某一特定课程,并确保他们从第一课开始。这很好,但我遇到的问题是,每个课程都要运行这个查询。例如,找到某一特定课程中每个人开始学习的第一天,而不是每门课程的第一天。现在我正在运行更一般的查询,并在业务层对其进行过滤

我把这一点弄糊涂了,所以请原谅我的打字错误:

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:

  • 课程表:课程详细信息具有一个关系

  • 学生表:包含学生详细信息

  • 查询是否会以这种方式简化

    对不起,如果有什么听起来不成熟的话。。。 当做 乌代