質問するログイン新規登録

回答編集履歴

1

調整

2023/04/14 02:14

投稿

yambejp
yambejp

スコア118073

answer CHANGED
@@ -1,4 +1,23 @@
1
1
  普通にorder by rand()して上位2名(LIMIT 2)をとればいいだけですね
2
2
  複数いればそれだけ確率はあがります。
3
3
  ただし、同じ人間が2度あたる可能性もあるので、結果に対してダブりが
4
- あった場合再抽選するのがわかりやすい気がします
4
+ あった場合再抽選するのがわかりやすい気がします
5
+
6
+ # 追記
7
+ ```SQL
8
+ create table tbl(id int primary key auto_increment,user varchar(10),rank double);
9
+
10
+ insert into tbl(user,rank) values
11
+ ('a',rand()),
12
+ ('a',rand()),
13
+ ('b',rand()),
14
+ ('b',rand()),
15
+ ('a',rand()),
16
+ ('a',rand()),
17
+ ('c',rand()),
18
+ ('d',rand());
19
+
20
+ select user,min(rank) as min_rank from tbl group by user order by min_rank;
21
+ ```
22
+
23
+ 上記当選者分でLimitを指定すればよいでしょう