问题描述:
我们以MySQL数据库为例,讲述怎么实现从多张表中随机抽取数据组合成一张新的表。问题分解可以这样:我们简化难度,首先我们先实现随机从一张表中抽取一条数据,并把它存储在一个临时变量中,我们可以重复以上工作,对多张表进行随机抽取一条数据并存储在临时变量,重点:我们把这些临时变量值组合起来使用insert语句插入一张新表。
下面是我的例子
sex表:
1 | 男 |
2 | 女 |
time表
1 | 00:00-02:00 |
10 | 22:00-24:00 |
11 | 06:00-08:00 |
12 | 18:00-20:00 |
2 | 02:00-04:00 |
3 | 04:00-06:00 |
我们现在随机从sex表和time表随机抽取数据组合sex_time表,触发器如下:
DROP PROCEDURE
IF EXISTS p_while_do;
CREATE PROCEDURE p_while_do ()
BEGIN
DECLARE i INT;
DECLARE gender CHAR(255);
DECLARE time CHAR(255);
SET i = 1;
WHILE i <= 10 DO
SELECT sex.gender INTO gender from sex ORDER BY RAND() LIMIT 1;
SELECT time.time INTO time from time ORDER BY RAND() LIMIT 1;
INSERT INTO sex_time
VALUES
(i, gender, time);
SET i = i + 1;
END
WHILE;
END;
CALL p_while_do ();
结果图如下