问题描述
我希望你很好
如果有人可以在MysqL中帮助我,我需要使用Laravel,但是直接sql对我来说是相同的:(
-id
-exercise_id (example 1 is not a foreign key since the exercises are not kNown)
-try_number (user attempt number)
-fk_student (foreign key of a student)
我需要获取所有报告(但每个学生和Exercise_id只有1个报告,并且只有try_number最高的报告)
例如,如果我有以下数据:
ID: 1
Exercise_ID: 1
TryNumber: 1
FK_Student: 1
ID: 2
Exercise_ID: 1
TryNumber: 2
FK_Student: 1
ID: 3
Exercise_ID: 1
TryNumber: 1
FK_Student: 2
ID: 4
Exercise_ID: 1
TryNumber: 2
FK_Student: 2
ID: 5
Exercise_ID: 1
TryNumber: 3
FK_Student: 2
ID: 6
Exercise_ID: 2
TryNumber: 1
FK_Student: 1
ID: 7
Exercise_ID: 2
TryNumber: 2
FK_Student: 1
我想获得以下信息:
ID: 2
Exercise_ID: 1
TryNumber: 2
FK_Student: 1
ID: 5
Exercise_ID: 1
TryNumber: 3
FK_Student: 2
ID: 7
Exercise_ID: 2
TryNumber: 2
FK_Student: 1
我尝试分组,但感到困惑:(
我对此SQL select only rows with max value on a column [duplicate]进行了评论 但我不明白如何在必要时添加位置和组,因为这(但每个学生和exercise_id仅1个,并且try_number最高的报告)
select * from `reports`
where unity_try_number = (select max(`unity_try_number`) from reports)
group by `fk_student`,`unity_exercise_id`
但是我不知道如何在子查询中添加实际的fk_student和实际的activity_id(从报告中选择max(unity_try_number
))
非常感谢!问候!
解决方法
使用相关子查询:
select r.*
from reports r
where r.unity_try_number = (select max(r2.unity_try_number)
from reports r2
where r2.fk_student = r.fk_student and
r2.unity_exercise_id = r.unity_exercise_id
);