您好,我想将一些随机值从一个表插入到另一个表中,我的查询如下所示:
INSERT INTO `rounds`(`matchID`, `questionOneID`, `questionTwoID`, `questionThreeID`) VALUES (17,(SELECT `id` FROM `questions` ORDER BY RAND() LIMIT 3))
问题是,mysql需要4个参数(matchID,questionOneID,...)并且只得到两个(17,(...))我如何告诉MySql它从SELECT中获取3个参数? 我真的必须这样做吗:
INSERT INTO `rounds`(`matchID`, `questionOneID`, `questionTwoID`, `questionThreeID`) VALUES (17,(SELECT `id` FROM `questions` ORDER BY RAND() LIMIT 1),(SELECT `id` FROM `questions` ORDER BY RAND() LIMIT 1),(SELECT `id` FROM `questions` ORDER BY RAND() LIMIT 1))
或者有更好的方法吗?
最佳答案
您的查询看起来正确。我会用 insert 来编写它。 。 。选择
:
INSERT INTO `rounds`(`matchID`, `questionOneID`, `questionTwoID`, `questionThreeID`)
SELECT 17,
(SELECT `id` FROM `questions` ORDER BY RAND() LIMIT 1),
(SELECT `id` FROM `questions` ORDER BY RAND() LIMIT 1),
(SELECT `id` FROM `questions` ORDER BY RAND() LIMIT 1);
如果您想保证这三个问题不同,那么我可能会采用这种方法:
INSERT INTO `rounds`(`matchID`, `questionOneID`, `questionTwoID`, `questionThreeID`)
SELECT 17,
substring_index(group_concat(id order by rnd), ',', 1),
substring(substring_index(group_concat(id order by rnd), ',', 2), ',', 11),
substring_index(group_concat(id order by rnd), ',', -1),
FROM (SELECT id, rand() as rnd FROM questions ORDER BY RAND() LIMIT 3) q
这会将三个随机问题放在一行上,没有重复项(除非 id
在 问题
中重复。
关于php - MySQL从另一个表插入随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24701360/