MySql按照rand不使用GROUP_CONCAT选择顺序

时间:2014-01-11 14:55:04

标签: mysql

拥有表userid

Id
--
1
2
3
4
5
6
7
8

我想用逗号分隔选择rand id, 我的查询如下

SELECT GROUP_CONCAT(Id) FROM `userid` order by rand(Id);

但即使使用rand(Id),它也会按升序显示结果如下 1,2,3,4,5,6,7,8-

预期结果应该是随机的&逗号分隔随机顺序,我怎么能得到? ..

2 个答案:

答案 0 :(得分:3)

您希望将order by放在group_concat()声明中:

SELECT GROUP_CONCAT(Id order by rand())
FROM `userid` ;

答案 1 :(得分:1)

'order by'是关于你获得的所有结果。而且因为你只获得了一个结果,所以你将结果的顺序随机化。

你可能做的就是这样,虽然效率不高:

SELECT GROUP_CONCAT(Id) FROM (SELECT Id FROM `userid` ORDER BY rand(Id)) a

通过这种方式,您可以检索所有ID,将其顺序​​随机化,然后再将它们分组。

旁注:如果你没有做更多的事情,你可能只是想要检索id并稍后随机化它们?否则,您可以查看此博客以获得更好的随机检索:http://jan.kneschke.de/projects/mysql/order-by-rand/