MySQL在同一列上排序两次

Tec*_*Kid 1 mysql sql mysqli

我的数据库就像

id|service_id
1 | 8
2 | 3
3 | 4
4 | 1
5 | 3
6 | 2
7 | 1
Run Code Online (Sandbox Code Playgroud)

我想将它排序为像行一样service_id但是随机的.喜欢

id|service_id
1 | 8
4 | 1
7 | 1
2 | 3
5 | 3
6 | 2
3 | 4
Run Code Online (Sandbox Code Playgroud)

意味着首先排序所有行service_id然后通过随机排序service_id.我也试过试过SELECT * from sample_table order by service_id DESC,ASC但它只通过DESC或排序ASC.我也尝试order by rand(service_id)了,但它也显示了一些固定的排序.

jue*_*n d 5

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;
Run Code Online (Sandbox Code Playgroud)

SQLFiddle演示

基本上这可以随意替代service_id和命令