zoukankan      html  css  js  c++  java
  • mysql批量复制表数据到另外几张表的写法

    delimiter //
    create procedure oneKey(in newNames varchar(1000),in oldName varchar(250),in id INT,in count INT)
    BEGIN
        declare num int; -- 定义变量给循环使用
        set num = 0;
        while num < count
            do
                SET @sqlStmt = CONCAT('insert into ', -- 要动态修改表名需要concat()方法
                    substring_index(substring_index(newNames,',',(0-count+num)),',',1), -- 循环截取字符串表名
                    ' select * from ',oldName,' where id = ',id);  -- 源数据表名
                PREPARE stmt FROM @sqlStmt;
                EXECUTE    stmt;
            set num=num+1;
        end while;
    END;
    //
    delimiter ;

    ps : 特别注意concat()方法中拼接的sql语句,逗号拼接处要留有空格!否则会出错!!!

    newNames : 要复制数据进去的表名组成的字符串(例:“'table1','table2','table3','table4',……”)

    oldName : 源数据表

    id : where条件(不需要可以不要)

    count : 要复制的新表个数

    【重点理解批量的概念 : 程序中循环操作数据库不能算是批量操作!把数据一次性给数据库,数据库自己去循环操作,这种才能算批量操作!!】

  • 相关阅读:
    Day10
    Day9
    Day8
    Day7
    Day 6
    Day5
    第一周计划
    事件总线模式辨析
    解释器模式辨析
    解释器模式深度探究
  • 原文地址:https://www.cnblogs.com/xuehuashanghe/p/9531160.html
Copyright © 2011-2022 走看看