【发布时间】:2015-04-02 14:33:07
【问题描述】:
如何从现有表中自动创建 100 个表。表名希望为 table1、table2、table3...table100。我不想执行 sql:"create bable table2 like table1" 100 次。提前致谢。
【问题讨论】:
如何从现有表中自动创建 100 个表。表名希望为 table1、table2、table3...table100。我不想执行 sql:"create bable table2 like table1" 100 次。提前致谢。
【问题讨论】:
您可以创建一个存储过程并调用它一次。这是从表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 |
+-----------------------+
【讨论】: