Mysql 使用ROLLUP进行排序
我可以做到以下几点:Mysql 使用ROLLUP进行排序,mysql,sql,aggregate-functions,rollup,Mysql,Sql,Aggregate Functions,Rollup,我可以做到以下几点: SELECT provider_id, count(*) cnt FROM title GROUP BY provider_id WITH ROLLUP 但是,它似乎不支持汇总后的排序: SELECT provider_id, count(*) cnt FROM title GROUP BY provider_id WITH ROLLUP ORDER BY count(*) DESC 多维数据集/汇总和排序方式的使用不正确 与此相关的两个问题: 是否不允许在与
SELECT provider_id, count(*) cnt
FROM title
GROUP BY provider_id WITH ROLLUP
但是,它似乎不支持汇总后的排序:
SELECT provider_id, count(*) cnt
FROM title
GROUP BY provider_id WITH ROLLUP
ORDER BY count(*) DESC
多维数据集/汇总和排序方式的使用不正确
与此相关的两个问题:
是否不允许在与with rollup相同的select语句中使用order by?或者,这是mysql5.7特有的功能吗?因为它不支持此功能,但其他DBs都支持此功能
鉴于此约束,使用子选择进行排序的唯一方法是什么
SELECT * FROM (<rollup query>) _ ORDER BY cnt DESC
相关,但没有真正回答上述问题,因为我已经有了上面的查询:。您使用的是哪个mysql版本8.0.22似乎没有问题。@nbk-5.7。。。。也许这就回答了我的第一个问题——它是sql标准的一部分,但8.0之前的mysql<8Versions不支持,在本例中不支持按计数排序*,子查询是唯一的选项。版本8+允许这种排序。似乎那个些古老版本中的汇总操作已经完成了最终排序!行列式窗口functions@Akina我明白了-想发布一个答案,我可以接受吗?以前,MySQL不允许在带有WITH ROLLUP选项的查询中使用DISTINCT或ORDER BY。MySQL 8.0.12及更高版本中取消了此限制。缺陷87450,缺陷86311,缺陷26640100,缺陷26073513