2

我对 mySQL 相当陌生。假设我正在向我的表中添加列,如下所示:

ALTER TABLE table ADD client_input_2.0_1 LONGTEXT;

我想添加一些类似的连续列,即

ALTER TABLE table ADD client_input_2.0_2 LONGTEXT;
ALTER TABLE table ADD client_input_2.0_3 LONGTEXT;
ALTER TABLE table ADD client_input_2.0_4 LONGTEXT;

等一直到足够大的数量,如果我手动执行此操作将需要相当长的时间。在我的例子中,2.0 代表一个部分/部分,最后一个数字代表一个问题编号,根据部分的不同,它可能在 1-50 左右之间,因此手动创建此表将花费大量时间。

有没有办法让我使用某种循环在脚本中执行此操作,每次都增加 col#?

非常感激,

4

2 回答 2

4

编辑代码

尝试使用存储过程

DELIMITER $$
DROP PROCEDURE IF EXISTS RepeatLoopProc$$
CREATE PROCEDURE RepeatLoopProc()
  BEGIN
          DECLARE x  INT;
          DECLARE str  VARCHAR(255);
          Declare @sql nvarchar(4000);
          SET x = 0;

          REPEAT
                      SET str =  '';
                      SET  str = CONCAT(str,'client_input_2.0_',x);
                      SET  x = x + 1;
                      set @sql='ALTER TABLE table_name ADD '+ str +' column-definition';
                      exec sp_executesql @sql;
          UNTIL x  > 50
          END REPEAT;

  END$$
DELIMITER ;

希望这会帮助你。

于 2013-01-14T04:55:45.267 回答
1

我想也许你应该使用另一种方法:

ALTER TABLE 表添加 col LONGTEXT,添加 col_index INT。

并使用 col_index 来跟踪 col 的用途

于 2013-01-14T04:45:06.127 回答