我有一张这样的表:
当然(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);
但是子查询返回多行,所以它不可用......
答案 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;