仅获取练习_id上用户的最后一次trynumber报告的报告

问题描述

我希望你很好

如果有人可以在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最高的报告)

我有这个sql

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
                           );

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...