我的数据库就像
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)
,但它也显示了一些固定的排序。
答案 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;
基本上,这可以随机替代service_id
和