【问题标题】:How to create tables with same table structure from an existed one in mysql?如何从mysql中的现有表创建具有相同表结构的表?
【发布时间】:2015-04-02 14:33:07
【问题描述】:

如何从现有表中自动创建 100 个表。表名希望为 table1、table2、table3...table100。我不想执行 sql:"create bable table2 like table1" 100 次。提前致谢。

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    您可以创建一个存储过程并调用它一次。这是从表test创建5个名称为test1...test5的表的示例

    在以下过程中更改循环值和表名

    delimiter //
    create procedure `create_tables`()
    begin
     declare x  INT ;
     set x = 1 ;
     while x  <= 5 do
       set  @qry = concat("create table test",x," like test ");
       prepare stmt from @qry;
       execute stmt ;
       deallocate prepare stmt ;  
       set  x = x + 1;
      end while;
    end ;//
    
    delimiter ;
    

    最后调用过程为

    call create_tables();
    

    然后运行命令查看表格

    show tables;
    

    这是一个mysql cli中的测试用例

    mysql> delimiter //
    mysql> create procedure `create_tables`()
        -> begin
        ->  declare x  INT ;
        ->  set x = 1 ;
        ->  while x  <= 5 do
        ->    set  @qry = concat("create table test",x," like test ");
        ->    prepare stmt from @qry;
        ->    execute stmt ;
        ->    deallocate prepare stmt ;  
        ->    set  x = x + 1;
        ->   end while;
        -> end ;//
    Query OK, 0 rows affected (0.22 sec)
    mysql> delimiter ;
    mysql> call create_tables() ;
    Query OK, 0 rows affected (0.74 sec)
    
    mysql> show tables ;
    +-----------------------+
    | Tables_in_test        |
    +-----------------------+
    | test                  |
    | test1                 |
    | test2                 |
    | test3                 |
    | test4                 |
    | test5                 |
    +-----------------------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      相关资源
      最近更新 更多