我正在使用全文搜索来拉行 我根据得分(ORDER BY SCORE)排序行,然后排在前20行(LIMIT 20),我想rand(RAND)结果集。
因此,对于任何特定的搜索词,我想随机显示前20个结果中的5个。
我的解决方法是基于代码的 - 我将前20个放入数组然后随机选择5。
有没有sql方法可以做到这一点?
答案 0 :(得分:6)
您可以使用内部选择来执行此操作。选择内部选择中的前20行。在外部选择顺序中,这些行随机选择前五个:
SELECT *
FROM (
SELECT *
FROM table1
ORDER BY score DESC
LIMIT 20
) AS T1
ORDER BY RAND()
LIMIT 5