2
схемы
данных: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)
);
Как выбрать 4 случайные различные идентификаторы из таблицы уровня в (lvlid1, lvlid2, lvlid3, lvlid4) заседаний Таблица? Более конкретно я хочу знать, если это возможно, чтобы сделать что-то вроде этого:
insert into session (lvlid1, lvlid2, lvlid3, lvlid4)
values(TRANSPOSE(select id from level order by rand() limit 4))
Спасибо! У меня появилась идея. Но вам нужно разделить самый внутренний выбор на два, чтобы заставить его работать. Он назначает row_number сначала, и 4 случайных не будут содержать 1, 2, 3, 4 точно, как сейчас. Но мне удалось заставить его работать. – rotanov
, например. например https://gist.github.com/rotanov/c6b53600daca159be3c2694c61774b69 – rotanov
Я дал ему больше мысли, и теперь я думаю, что с еще одним выбором вы можете вообще опустить 'order by t2.rn limit 4' или переместить только' limit 4 'обратно во внутренний выбор. Я не знаю, что лучше. – rotanov