Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用ROLLUP进行排序_Mysql_Sql_Aggregate Functions_Rollup - Fatal编程技术网

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