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

问题描述:
我们以MySQL数据库为例,讲述怎么实现从多张表中随机抽取数据组合成一张新的表。问题分解可以这样:我们简化难度,首先我们先实现随机从一张表中抽取一条数据,并把它存储在一个临时变量中,我们可以重复以上工作,对多张表进行随机抽取一条数据并存储在临时变量,重点:我们把这些临时变量值组合起来使用insert语句插入一张新表。

下面是我的例子
sex表:

1
2

time表

100:00-02:00
1022:00-24:00
1106:00-08:00
1218:00-20:00
202:00-04:00
304: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 ();

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值