首页 > 数据库技术 > 详细

Mysql 使用存储过程合并多个表数据

时间:2021-08-18 10:24:39      阅读:24      评论:0      收藏:0      [点我收藏+]
drop procedure if exists mergeTable;
CREATE PROCEDURE mergeTable()
BEGIN

    #定义变量
    declare temp_table_name varchar(20);
    declare total int default 0;
    declare done int default false;
    #游标数据来源  查询出你想要合并的表名称
    declare cur cursor for SELECT table_name
                           from information_schema.TABLES
                           where table_name LIKE ‘%user%‘
                           group by table_name;
    #定义标记结束
    declare continue HANDLER for not found set done = true;

    drop table if exists temp_table;
    #创建临时表
    CREATE temporary TABLE `temp_table`
    (
        `id`   int(11)    NOT NULL,
        `name` int(11)    NOT NULL,
        `type` tinyint(2) NOT NULL
    );


    set total = 0;
    open cur;
    #变量赋值
    fetch cur into temp_table_name;
    while(not done)
        do
            #复制表数据到临时表
            set @sqlStr = CONCAT(‘INSERT INTO temp_table (`id`, `name`, `type`)
        SELECT `id`, `name`, `type`
     FROM  ‘, temp_table_name);

            PREPARE stmt from @sqlStr;
            #执行sql
            EXECUTE stmt;

            fetch cur into temp_table_name;
        end while;

    close cur;
    #统计临时表个数
    select count(1) from temp_table;
END;

#执行临时表
call mergeTable();

Mysql 使用存储过程合并多个表数据

原文:https://www.cnblogs.com/wlphp/p/15155410.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!