从最近20条记录中随机返回5条记录


return random 5 records from last 20 records

我有以下内容

表中有记录,我想从最近20条记录中随机返回5条记录(按id desc排序)

那么我们如何才能快速完成它谢谢你的帮助。

select * from
(
  select * from your_table 
  order by id desc limit 20
) as lastest_results
order by rand()
limit 5;

使用内部查询返回最近的20个,并使用外部查询随机选择其中的5个。这可能比较慢。

SELECT * FROM (SELECT * FROM table ORDER BY id DESC LIMIT 20) t ORDER BY RAND() LIMIT 5;  

这是一个缓慢的方法,但它完成了工作:

ORDER BY RAND()
LIMIT 5;

如果你正在使用一个大的表,这可能会变得非常慢,你可以在这里阅读到多种选择

按rand排序

你需要像

SELECT * FROM table ORDER BY RAND() LIMIT 5;

如果你有一个时间参数来排序,例如最近的20条记录,那么使用这个。

SELECT * FROM table ORDER BY insert_time DESC, RAND() LIMIT 5;