2015-08-29 62 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()应该为你工作。