mysql选择col a,其中max(col b)按col c分组

时间:2017-06-12 12:19:28

标签: mysql

我有一张这样的表:

当然(id不唯一)| coursemodule(nvarchar)| time_added(时间戳)

该表记录了每个课程模块(当然认为它是一个孩子)添加了添加时间的日志

所以我想获得为每门课程创建的最古老的课程模块

这样的东西
SELECT course, coursemodule, min(time_added)
FROM my_table
GROUP BY course;

但我们可以使用非聚合列

进行分组

我也见过

SELECT t.course, t.coursemodule, t.time_added
FROM   my_table t
WHERE  time_added=(SELECT MIN(t2.time_added)
          FROM my_table t2
          WHERE t.course = t2.course);

但是子查询返回多行,所以它不可用......

2 个答案:

答案 0 :(得分:0)

这种方式适用于我想要的东西:

SELECT t.course, t.coursemodule, t.time_added
FROM ( SELECT t2.course, min(t2.time_added)
       FROM my_table t2
       GROUP BY t2.course
) tmp
INNER JOIN my_table t ON t.course = tmp.course AND t.time_added = tmp.time_added

答案 1 :(得分:0)

要获得每门课程的最早coursemodule,您只需GROUP BY课程和课程模块,例如:

SELECT course, coursemodule, min(time_added)
FROM my_table
GROUP BY course, coursemodule;