0

假设我有一个表 - 任务 - 包含以下数据:

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' 是否按任何顺序对它们进行分组,我可以做到吗?

我问的原因是我有一个大表,我在上面显示数据,如果我丢失了 group by 并且只按日期顺序显示结果,我会得到一些没有显示在 group by 上的结果,这意味着任务已经完成以前做过,但它似乎是按最旧的日期分组的,我希望最新的日期在堆的顶部。

希望这是有道理的...是否可以按顺序影响组?

4

1 回答 1

1

那是你要的吗?

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

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

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

于 2012-10-28T12:18:58.953 回答