SQL group by和order by issue

时间:2012-10-28 12:15:59

标签: mysql sql

让我说我有一个表 - 任务 - 包含以下数据:

task    user     when_added
---------------------------
run     1        2012-08-09
walk    2        2012-08-07
bike    2        2012-08-07
car     1        2012-08-06
run     2        2012-08-06
car     1        2012-08-05
bike    1        2012-08-04
run     1        2012-08-04

正如您所看到的,任务是重复的。

问题是,当我显示数据时,例如

select * from tasks group by task order by when_added desc

该小组如何影响结果? 'group by'是否以任何顺序对它们进行分组,我可以制作吗?

我问的原因是我有一个大表,我在上面显示数据,如果我丢失了组,只是按日期顺序显示结果,我得到的一些结果不显示在分组上,这意味着任务已经完成,但似乎是按照最早的日期进行分组,我希望最新的日期位于最顶层。

希望这有意义......是否可以按顺序影响群组?

1 个答案:

答案 0 :(得分:1)

这就是你想要的吗?

select task, group_concat(user), max(when_added)
from tasks 
group by task
order by when_added desc

group by是一个聚合函数。在MySQL中,您可以选择不聚合列,但不应该这样做。

如果按列分组,则该列的结果将不同,所有其他数据将围绕该列进行分组。因此,可能存在多个数据,例如taskrun。只需选择其他列将选择随机结果。您应该从该组中选择特定结果,例如maxminsum,或者将它们连接起来。