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

6 mysql sql

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

小智 12

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

select * 
from activities 
group by id_customer 
order by creation_date
Run Code Online (Sandbox Code Playgroud)

但它不起作用.尝试改为:

SELECT * 
FROM ( select * 
       from activities 
       order by creation_date desc ) sorted_list 
GROUP BY id_customer
Run Code Online (Sandbox Code Playgroud)


RB.*_*RB. 8

添加DESC到该GROUP BY子句,例如:

GROUP BY myDate DESC
Run Code Online (Sandbox Code Playgroud)


Shi*_*han 7

正如MySQL文档所说,

SELECT * FROM foo GROUP BY bar
Run Code Online (Sandbox Code Playgroud)

相当于

SELECT * FROM foo GROUP BY bar ORDER BY bar
Run Code Online (Sandbox Code Playgroud)

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

SELECT * FROM foo GROUP BY bar ORDER BY bar DESC
Run Code Online (Sandbox Code Playgroud)

没有经历任何速度惩罚,因为无论如何将对分组的场进行分类.顺便说一下,当排序不重要时,你可以通过使用ORDER BY NULL来获得(小)加速.