我有以下 MySQL 表(student_lesson_progress):
- ID
- 课程编号
- 学生卡
- 课程状态类型 ID
- 记录日期时间
- ...
我需要捕获当前学年中最后状态为两个值(6 或 13)之一的学生数量。
我是 SQL 新手。我想我想从获取每个 studentId/lessonId 组合的最后一条记录开始。然后我想将该列表缩小到符合我标准的列表。这是我认为我想要的查询,但它在子查询中的“Max”处触发语法错误。
SELECT M1.*
FROM student_lesson_progress M1
{
SELECT MAX(id) as lastRecord, lessonId, studentId, lessonStatusTypeId
FROM student_lesson_progress
GROUP BY studentId, lessonId
} M2
WHERE recordDateTime > "2012-08-01"
AND (lessonStatusTypeId = 13 or lessonStatusTypeId = 6)
ORDER BY studentId, lessonId, lastRecord
我很难找到具有计算值的子查询的语法示例。建议?或者也许有更好的方法?