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

来源:互联网 发布:苏州慧博网络是坑吗 编辑:程序博客网 时间:2024/05/23 15:38

问题描述:
我们以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 PROCEDUREIF EXISTS p_while_do;CREATE PROCEDURE p_while_do ()BEGINDECLARE 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_timeVALUES    (i, gender, time);SET i = i + 1;ENDWHILE;END;CALL p_while_do ();

结果图如下
这里写图片描述

1 0
原创粉丝点击