LIMIT然后RAND而不是RAND然后LIMIT

时间:2010-04-15 18:44:49

标签: mysql limit random

我正在使用全文搜索来拉行 我根据得分(ORDER BY SCORE)排序行,然后排在前20行(LIMIT 20),我想rand(RAND)结果集。

因此,对于任何特定的搜索词,我想随机显示前20个结果中的5个。

我的解决方法是基于代码的 - 我将前20个放入数组然后随机选择5。

有没有sql方法可以做到这一点?

1 个答案:

答案 0 :(得分:6)

您可以使用内部选择来执行此操作。选择内部选择中的前20行。在外部选择顺序中,这些行随机选择前五个:

SELECT *
FROM (
    SELECT *
    FROM table1
    ORDER BY score DESC
    LIMIT 20
) AS T1
ORDER BY RAND()
LIMIT 5