繁体   English   中英

MySQL的子查询和最大或分组?

[英]MySql subqueries and max or group by?

我有这张桌子:

ID STUDENT CLASS QUESTION ANSWER   TIME
 1   1      1       1       c     12:30
 2   1      1       1       d     12:36
 3   1      1       2       a     12:38
 4   2      1       1       b     11:24
 5   2      1       1       c     11:26
 6   2      1       3       d     11:35
 7   2      3       3       b     11:24

我正在尝试编写执行此操作的查询:

对于特定CLASS中的每个学生,请为每个问题选择最新的答案。

因此,选择类“ 1”将返回:

ID STUDENT CLASS QUESTION ANSWER   TIME
 2   1      1       1       d     12:36
 3   1      1       2       a     12:38
 5   2      1       1       c     11:26
 6   2      1       3       d     11:35

我尝试了子查询,联接和分组的各种组合,但是没有任何效果。 有任何想法吗?

您可以使用子查询来获取每个QUESTION最新ANSWER ,然后将其用作派生表并联接回原始表:

 SELECT m.*
 FROM mytable AS m
 INNER JOIN (
    SELECT STUDENT,  QUESTION, MAX(`TIME`) AS mTime
    FROM mytable
    WHERE CLASS = 1
    GROUP BY STUDENT, QUESTION 
) AS d ON m.STUDENT = d.STUDENT AND m.QUESTION = d.QUESTION AND m.`TIME` = d.mTime
WHERE m.CLASS = 1

在这里演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM