2
데이터 방식으로 그들을 트랜스 : 세션의 난 (lvlid1, lvlid2, lvlid3, lvlid4)에 레벨 테이블에서 4 개 임의의 서로 다른 ID를 선택하려면 어떻게MYSQL - 4 개 임의의 행을 선택하고 삽입 문을 열
create table level (
id int auto_increment primary key,
# ... other data which is not relevant
);
create table session (
id int auto_increment primary key,
lvlid1 int not null,
lvlid2 int not null,
lvlid3 int not null,
lvlid4 int not null,
ts timestamp not null default current_timestamp,
foreign key(lvlid1) references level(id),
foreign key(lvlid2) references level(id),
foreign key(lvlid3) references level(id),
foreign key(lvlid4) references level(id)
);
표? 는 구체적으로 나는 그것이 가능 이런 식으로 뭔가를 알고 싶어 :
insert into session (lvlid1, lvlid2, lvlid3, lvlid4)
values(TRANSPOSE(select id from level order by rand() limit 4))
고마워요! 나는 그 생각을 가지고있다. 그러나 가장 효과가있는 선택을 2 개로 분할해야합니다. 그것은 row_number를 먼저 할당하고 4 개의 랜덤은 1, 2, 3, 4를 포함하지 않을 것입니다. 그러나 나는 그것을 효과가있게 만들었다. – rotanov
예 : 이처럼 https://gist.github.com/rotanov/c6b53600daca159be3c2694c61774b69 – rotanov
나는 더 많은 생각을했고 지금은 네가 't2.rn limit 4'를 생략하거나'limit 4 '다시 가장 안쪽으로 선택하십시오. 나는 어떤 것이 성능면에서 더 좋은지 모른다. – rotanov