2015-08-29 2 views
0

Возможно, это легко, но я понятия не имею, как правильно это обрабатывать. У меня есть следующая таблица t1 с этими данными:Случайный порядок для группы строк в mysql

----------------- 
| 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 или sth. похоже, я точно знаю только одну строку каждой группы. Как я могу случайно упорядочить группы, что тут трюк ???

Спасибо, ребята за чего свет в темноту;)

+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

WOW, отлично. Я не понимаю этого сейчас, но он работает. –

0

ORDER BY RAND() должны работать для вас.

Смежные вопросы