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

Chr*_*ris 0 mysql

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

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

这可能吗?您能给我指出正确的方向吗?

Mar*_*ton 5

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

SELECT *
FROM (
  SELECT ID, Name, VideoFile
  FROM VideoTable
  ORDER BY ID DESC
  LIMIT 100
) Derived
ORDER BY RAND()
LIMIT 10
Run Code Online (Sandbox Code Playgroud)