让我说我有一个表 - 任务 - 包含以下数据:
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'是否以任何顺序对它们进行分组,我可以制作吗?
我问的原因是我有一个大表,我在上面显示数据,如果我丢失了组,只是按日期顺序显示结果,我得到的一些结果不显示在分组上,这意味着任务已经完成,但似乎是按照最早的日期进行分组,我希望最新的日期位于最顶层。
希望这有意义......是否可以按顺序影响群组?
答案 0 :(得分:1)
这就是你想要的吗?
select task, group_concat(user), max(when_added)
from tasks
group by task
order by when_added desc
group by
是一个聚合函数。在MySQL中,您可以选择不聚合列,但不应该这样做。
如果按列分组,则该列的结果将不同,所有其他数据将围绕该列进行分组。因此,可能存在多个数据,例如task
为run
。只需选择其他列将选择随机结果。您应该从该组中选择特定结果,例如max
或min
或sum
,或者将它们连接起来。