ラベル 抽選 の投稿を表示しています。 すべての投稿を表示
ラベル 抽選 の投稿を表示しています。 すべての投稿を表示

2012-06-04

MySQLで抽選処理を行う

+--------+---------+------+-----+---------+-------+
| Field  | Type    | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| number | double  | NO   | PRI | NULL    |       |
| rank   | int(11) | YES  | MUL | NULL    |       |
+--------+---------+------+-----+---------+-------+
number:くじ番号
rank:当選順位

みたいな感じのスキーマのデータがあったとします。
これに対してランダムにレコードを選ぶことで抽選を行い、当選順位をセットしてあげるという処理がSQL一発で出来たのでメモ

1位を3本選んでrankに1をセットするという場合はこんな感じ。
update table1 set rank=1 where rank=NULL order by rand() limit 3;
同様に、2位を10本選んでrankに2をセットするという場合はこんな感じ。
update table1 set rank=2 where rank=NULL order by rand() limit 10;
簡単ですねヾ(*・ω・)シ