【MySQL】ループでINSERT文を実行する方法


ここではMySQLで、ループでINSERT文を実行する方法について紹介しています。

ループでINSERT文を実行する方法

ストアドプロシージャ(PROCEDURE)を使うことで、ループを使って繰り返しINSERT文を処理することが出来ます。

次のテーブルを作成し、実際にPROCEDUREを作成し実行してみます。

create table tab(
 col1 int
 ,col2 varchar(10)
 );

次のプロシージャでループしてINSERT文を実行しています。

引数「i」で登録したい件数を渡します。
「cnt」変数でデータの件数をカウントしていき、登録したい件数「i」に到達するまで繰り返しINSERT文を実行していきます。

drop procedure if exists test_loop;
delimiter //
create procedure test_loop(in i int)
begin
  declare cnt int default 0;
  while cnt < i do
    set cnt = cnt + 1;
    insert into tab values(cnt,'test');
  end while;
end
//

実際に試してみます。
CALLコマンドを使って、先ほどのプロシージャを呼び出します。引数は5を指定し、5件登録させます。

mysql> call test_loop(5);
Query OK, 1 row affected (0.04 sec)

5件登録されていることが確認できました。

mysql> SELECT * FROM tab;
+------+------+
| col1 | col2 |
+------+------+
|    1 | test |
|    2 | test |
|    3 | test |
|    4 | test |
|    5 | test |
+------+------+
5 rows in set (0.01 sec)