MySQL ORDER BY rand(),名称 ASC

2022-08-30 10:36:32

我想拿一个数据库,比如说,1000个用户,并选择20个随机用户(,),然后按名称对结果集进行排序。我想出了以下查询,它没有像我希望的那样工作。ORDER BY rand()LIMIT 20

SELECT * FROM users WHERE 1 ORDER BY rand(), name ASC LIMIT 20


答案 1

使用子查询:

SELECT * FROM 
(
    SELECT * FROM users ORDER BY rand() LIMIT 20
) T1
ORDER BY name 

内部查询随机选择 20 个用户,外部查询按名称对所选用户进行排序。


答案 2

当心RAND()的订单,因为性能和结果。查看本文: http://jan.kneschke.de/projects/mysql/order-by-rand/


推荐