MySQL查询排序需求:按sum(value)降序且null名称排最后
MySQL查询:按sum(value)降序排序且name为null的记录排在最后
没问题,这就给你搞定这个查询需求!我们可以通过ORDER BY子句的多条件排序来实现:先把name为null的记录归到优先级更低的分组,再按sum(value)降序排列。结合你给出的SELECT p...开头,完整的查询语句如下:
SELECT p.name, SUM(p.value) AS `sum(value)` FROM your_table_name p -- 记得把这里替换成你的实际表名 GROUP BY p.name ORDER BY CASE WHEN p.name IS NULL THEN 1 ELSE 0 END, SUM(p.value) DESC;
逻辑说明:
CASE WHEN p.name IS NULL THEN 1 ELSE 0 END:给name为null的记录标记为1,其他记录标记为0。排序时0会排在1前面,这样就自动把null的记录挤到了最后。- 紧接着的
SUM(p.value) DESC:对非null的记录按求和值做降序排序,完全匹配你的需求。
如果你的数据已经是聚合后的结果(比如已经有现成的sum(value)字段),可以简化成下面的语句:
SELECT p.name, p.`sum(value)` FROM your_aggregated_table p -- 替换为你的实际表名 ORDER BY CASE WHEN p.name IS NULL THEN 1 ELSE 0 END, p.`sum(value)` DESC;
内容的提问来源于stack exchange,提问作者Ganesh selvam
相关产品推荐
相关产品推荐

