MySQLではループ処理を記述する場合に、どのように記述するのですか?
MySQL では、ループ制御ステートメントを使用してループの実装が可能です。次のタイプのループがサポートされています。
- WHILEループ: 与えられた条件が真である間、一連の文を繰り返し実行します。
WHILE condition DO
statements;
END WHILE;
例え:
SET @counter = 0;
WHILE @counter < 10 DO
SET @counter = @counter + 1;
SELECT @counter;
END WHILE;
- REPEAT ループ: 指定した条件が真になるまで、一連のステートメントを繰り返す。
REPEAT
statements;
UNTIL condition;
END REPEAT;
例えば:
SET @counter = 0;
REPEAT
SET @counter = @counter + 1;
SELECT @counter;
UNTIL @counter >= 10 END REPEAT;
- ループ処理:終わりがない無限のループ。ループ内では「LEAVE」文を使ってループ処理の中断が必要。
loop_label: LOOP
statements;
IF condition THEN
LEAVE loop_label;
END IF;
END LOOP;
例えば、
SET @counter = 0;
loop_label: LOOP
SET @counter = @counter + 1;
SELECT @counter;
IF @counter >= 10 THEN
LEAVE loop_label;
END IF;
END LOOP;
循环の中で、クエリ、挿入、更新などの任意のSQL文を実行できます。また、循環の間、変数を使用してカウンタ、結果の格納などの操作を行うことができます。