数据库中定义触发器实现:从多张表随机抽取数据组合成一张新表

时间:2021-08-20 14:52:20

问题描述:
我们以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 ();

结果图如下
数据库中定义触发器实现:从多张表随机抽取数据组合成一张新表