mysql

时间:2015-08-29 08:04:06

标签: mysql random group-by sql-order-by

也许这很容易,但我不知道如何正确处理这个问题。我有以下表格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或某事时,我不明白。类似的我确定每组只有一行。我如何随机订购团队,这里有什么诀窍???

谢谢你们让光线进入黑暗;)

2 个答案:

答案 0 :(得分:1)

E.g:

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;

答案 1 :(得分:0)

ORDER BY RAND()应该适合你。