2015-08-29 108 views
0

也許這很容易,但我不知道如何正確處理這個。我有這個數據如下表T1:隨機訂單組中的行

----------------- 
| id | gr_id | 
----------------- 
| 1  | a  | 
| 2  | a  | 
| 3  | b  | 
| 4  | b  | 
| 5  | c  | 
| 6  | c  | 
| 7  | d  | 
| 8  | d  | 
----------------- 

我想獲得隨機gr_ids這樣的:

----------------- 
| id | gr_id | 
----------------- 
| 3  | b  | 
| 4  | b  | 
| 5  | c  | 
| 6  | c  | 
| 7  | d  | 
| 8  | d  | 
| 1  | a  | 
| 2  | a  | 
----------------- 

入門有序gr_ids升降是很容易的,但要隨機分組的結果,比我想象的要複雜得多。

我不明白,當我使用GROUP BY或某事。類似的,我確信每組只有一行。我如何隨機排序組,這裏有什麼技巧?

感謝你們帶來光明,陷入黑暗;)

+1

加入不同羣體的隨機安排到你的餐桌。並注意,該組對於表格/列標識符來說是愚蠢的詞 – Strawberry

+0

你是對的,但它只是一個例子。我改變了它。你能否稍微解釋一下你的評論。 –

回答

1

例如爲:

SELECT x.* 
    FROM my_table x 
    JOIN 
    (SELECT DISTINCT gr_id 
        , RAND() rnd 
        FROM my_table 
    ) y 
    ON y.gr_id = x.gr_id 
ORDER 
    BY y.rnd 
    , x.id; 
+0

哇,完美。我現在不明白,但是它有效。 –

0

ORDER BY RAND()應該爲你工作。