我正在尝试从我的数据库中挑选随机文章,高评级文章有更高的机会被选中
SELECT * FROM articles WHERE RAND()>0.9 ORDER BY rating DESC LIMIT 3
我的问题是: 它是随机整个表格,还是直到找到3篇随机数高于0.9的文章
答案 0 :(得分:0)
如果你有INDEX(rating)
,该查询将可能获取3或4(3 /(1-0.1))行,然后才能找到3。
但这并没有给你"高评价文章有更高的机会被选中"一点都不它只是给你一个90%的排名最高的行。
这可能会给你你想要的东西,但有一个全表扫描:
SELECT *
FROM articles
ORDER BY rating * RAND() DESC
LIMIT 3;