可以在MySQL中选择最后100条记录,然后在一个查询中从这些结果中选择随机10吗?

时间:2013-03-20 02:46:06

标签: mysql

我需要在与该视频属于同一类别的视频页面上显示10个相关视频。问题是每个类别可能有数十万行,因此运行RAND()是不可能的,我宁愿不创建匹配我的innodb表的myisam表,然后搜索相关的全文。 / p>

我不确定我的想法是否可行,但我想根据日期选择该类别的100个最新行,然后从该集合中随机选择10个。

这可能,你能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:4)

我假设您有一个名为ID的简单表,您可以执行以下操作:

SELECT *
FROM (
  SELECT ID, Name, VideoFile
  FROM VideoTable
  ORDER BY ID DESC
  LIMIT 100
) Derived
ORDER BY RAND()
LIMIT 10

答案 1 :(得分:0)

选择*来自 (从表ORDER BY DESC LIMIT 100中选择*) ORDER BY rand() 限制10