我只需要以下
带有记录的表,我想从最后20条记录中随机返回5条记录(按照id desc排序)
所以我们如何快速做到这一点 谢谢你的帮助。
答案 0 :(得分:9)
select * from
(
select * from your_table
order by id desc limit 20
) as lastest_results
order by rand()
limit 5;
答案 1 :(得分:2)
使用内部查询返回最后20个,并使用外部查询随机选择其中的5个。这可能会很慢。
SELECT * FROM (SELECT * FROM table ORDER BY id DESC LIMIT 20) t ORDER BY RAND() LIMIT 5;
答案 2 :(得分:0)
这是一个很慢的方法,但它完成了JOB:
ORDER BY RAND()
LIMIT 5;
如果您使用的是大桌子,这会变得很慢, 您可以在这里阅读多种替代方案
答案 3 :(得分:0)
你需要像
这样的东西SELECT * FROM table ORDER BY RAND() LIMIT 5;
如果您有一个时间参数来对它们进行排序,例如最后20条记录,那么请使用它。
SELECT * FROM table ORDER BY insert_time DESC, RAND() LIMIT 5;
OR
SELECT * FROM table ORDER BY id DESC,RAND()LIMIT 5;