2014-01-11 32 views
0

擁有表的用戶ID的工作MySql的蘭德公司選擇以不使用GROUP_CONCAT

Id 
-- 
1 
2 
3 
4 
5 
6 
7 
8 

我想選擇帶有逗號蘭特ID分開, 我有查詢,如下所示

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

但即使使用蘭特( Id)顯示結果如下升序 1,2,3,4,5,6,7,8

預期結果應該是隨機的&個逗號分隔隨機順序,我怎麼能得到? ..

回答

2

你想把order bygroup_concat()聲明:

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

'order by'是關於你得到的所有結果。而且因爲你只能得到一個結果,所以你會隨機化結果的順序。

什麼你大概可以做的是這樣的事情,但它幾乎沒有非常有效:

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

這樣你檢索所有標識的,隨機化的順序,然後GROUP_CONCAT他們。

附註:如果你沒有做更多的事情,你可能只是想檢索身份證並稍後進行隨機化?否則,你可以看看這個博客有更好的隨機檢索:http://jan.kneschke.de/projects/mysql/order-by-rand/

+0

其示值誤差「每一個派生的表必須有它自己的別名」 – user1844933

+0

這很容易解決,我會編輯,但請記住它只是一個提示,你可以從這裏拿着手冊? :D – Nanne

+0

(我添加的'a'是您在執行select時獲得的表的別名) – Nanne