我有个问题

SELECT name,count(*) cnt group by b order by cnt desc limit 10;

所以我会有一个清单
Name    Count

test     6
test2    4
test6    1
test23   1
test4    1

问题是,cnt=1时有1000个结果,我希望随机显示它们,否则每次查询都会或多或少地显示相同的结果。我想要的是对具有相同cnt值的行进行随机排序。是可行的吗?

最佳答案

您可以在计数后按顺序使用RAND()

SELECT name,count(*) cnt from t
 group by b order by cnt desc ,RAND()
 limit 10;

因此,第一行将由cnt按降序排列,然后对于相同的count(cnt)值,行将随机排列
Sample demo with provided dataset

关于mysql - 分组和受限查询的随机顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24056744/

10-12 13:55