MySQL在同一列上排序两次

时间:2018-05-12 06:14:40

标签: mysql sql mysqli

我的数据库就像

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,但它只能通过DESCASC进行排序。我也试过order by rand(service_id),但它也显示了一些固定的排序。

1 个答案:

答案 0 :(得分: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;

SQLFiddle demo

基本上,这可以随机替代service_id

的订单