我有一张名为tickets
的表,用于存储购买的所有门票。它看起来像:
id int AI,primary
userid int
现在,用户显然可以购买尽可能多的门票,因为他们希望增加获胜几率。现在运行这个语句有什么不对吗
SELECT
u.id AS winner FROM tickets t
LEFT JOIN users u ON t.user = u.id
ORDER BY RAND() LIMIT 1
对于像这样的系统,MySQL功能是否“真正”随机?
有时,当我运行查询时,会选择相同的人。
答案 0 :(得分:0)
http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_rand
RAND() is not meant to be a perfect random generator. It is a fast way to generate random numbers on demand that is portable between platforms for the same MySQL version.
另请注意,随着您的表变大,此查询将变得非常昂贵,因为它必须在返回之前对表中的每一行进行排序。