LIMIT然后RAND而不是RAND然后LIMIT

Lar*_*rry 3 mysql random limit

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

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

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

有没有sql方法来做到这一点?

Mar*_*ers 6

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

SELECT *
FROM (
    SELECT *
    FROM table1
    ORDER BY score DESC
    LIMIT 20
) AS T1
ORDER BY RAND()
LIMIT 5
Run Code Online (Sandbox Code Playgroud)