如何在MySQL中更改Group By子句的默认顺序

时间:2020-03-06 14:20:43  来源:igfitidea点击:

默认情况下,GROUP BY子句提取的数据按升序排列。
如何将其更改为降序。

解决方案

GROUP BY子句中添加DESC,例如:

GROUP BY myDate DESC

"按foo DESC订购"?

如MySQL文档所述,

SELECT * FROM foo GROUP BY bar

相当于

SELECT * FROM foo GROUP BY bar ORDER BY bar

默认行为无法更改,但可以使用

SELECT * FROM foo GROUP BY bar ORDER BY bar DESC

不会遭受任何速度损失,因为无论如何都会在分组的字段上执行排序。
顺便说一句,当排序不重要时,可以通过使用ORDER BY NULL获得(小的)加速。

我们应该在SQL上使用派生表。
例如,如果我们想获取特定活动的最新行,则尝试使用该行:

select * 
from activities 
group by id_customer 
order by creation_date

但这是行不通的。请尝试:

SELECT * 
FROM ( select * 
       from activities 
       order by creation_date desc ) sorted_list 
GROUP BY id_customer