2016-03-25 19 views
-2

私は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.

あなたのテーブルは、それが戻る前に、テーブル内のすべての行をソートする必要がありますので、このクエリは非常に高価になり大きくなるようにも注意してください。

関連する問題