Сортировка MySQL дважды по одному столбцу - PullRequest
0 голосов
/ 12 мая 2018

Моя база данных похожа на

id|service_id
1 | 8
2 | 3
3 | 4
4 | 1
5 | 3
6 | 2
7 | 1

Я хочу отсортировать строки как с одинаковыми service_id, но случайно. как

id|service_id
1 | 8
4 | 1
7 | 1
2 | 3
5 | 3
6 | 2
3 | 4

означает, что сначала все строки сортируются по service_id, а затем снова сортируются по случайному service_id. Я пробовал SELECT * from sample_table order by service_id DESC и тоже пытался ASC, но он сортировал только через DESC или ASC. Я тоже пробовал order by rand(service_id), но он также показывает некоторую исправленную сортировку.

1 Ответ

0 голосов
/ 12 мая 2018
select t.*
from your_table t
join 
(
  select service_id, rand() as r
  from your_table 
  group by service_id
) tmp on t.service_id = tmp.service_id
order by tmp.r;

Демонстрация SQLFiddle

По сути, это случайная замена service_id и порядков, которые

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...