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 table ADD col LONGTEXT, ADD col_index INT.

col_index を使用して、列の目的を追跡します

于 2013-01-14T04:45:06.127 に答える