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;
簡単ですねヾ(*・ω・)シ

0 件のコメント:

コメントを投稿