我需要在一个视频页面上显示 10 个与该视频属于同一类别的相关视频。问题是每个类别可能有数十万行,因此运行 RAND() 是不可能的,我不希望创建与我的 innodb 表匹配的 myisam 表,然后全文搜索相关。
我不确定我的想法是否可行,但我想为按日期排序的该类别选择 100 个最新行,然后从该集合中随机选择 10 个。
这可能吗?请您指出正确的方向吗?
我需要在一个视频页面上显示 10 个与该视频属于同一类别的相关视频。问题是每个类别可能有数十万行,因此运行 RAND() 是不可能的,我不希望创建与我的 innodb 表匹配的 myisam 表,然后全文搜索相关。
我不确定我的想法是否可行,但我想为按日期排序的该类别选择 100 个最新行,然后从该集合中随机选择 10 个。
这可能吗?请您指出正确的方向吗?
我假设您有一个名为 的简单表ID
,您可以执行以下操作:
SELECT *
FROM (
SELECT ID, Name, VideoFile
FROM VideoTable
ORDER BY ID DESC
LIMIT 100
) Derived
ORDER BY RAND()
LIMIT 10
select * from (select * from table ORDER BY DESC LIMIT 100) ORDER BY rand() LIMIT 10