MySQLスクリプトで配列(または任意のコレクション)を宣言し、ループして処理する方法はありますか?例えばmysqlの配列変数
、
SET @myArrayOfValue=[2,5,2,23,6]
for each @value in @myArrayOfValue
INSERT INTO EXEMPLE VALUES(@value, 'hello');
end for each
MySQLスクリプトで配列(または任意のコレクション)を宣言し、ループして処理する方法はありますか?例えばmysqlの配列変数
、
SET @myArrayOfValue=[2,5,2,23,6]
for each @value in @myArrayOfValue
INSERT INTO EXEMPLE VALUES(@value, 'hello');
end for each
いいえ、SQLは、各の/ etc構文についてはサポートしていません。カーソルを使用するのが最も近いでしょう。また、SQLには配列の構文がありません。
SELECT 2 FROM DUAL
UNION ALL
SELECT 34 FROM DUAL
UNION ALL
SELECT 24 FROM DUAL
... "SQLの値の配列"を構成するには。
SQLスクリプトには個別のINSERT文が必要です。あなたはPHP/Java/etcの使用を検討しています。あなたの例で提供されているようなFORループ風の構文を使用します。
可能な現実的な状況の下でこれをしたいですか?配列がSELECT文のものである場合は、INSERT ... SELECTを実行します。配列がアプリケーションからのものであれば、(@value、2)、(@ value、5)、(@ value、2)をINSERTする必要があります。 – longneck
メンテナンススクリプトを使って新しい値。各インサートのコピー貼り付けを行う代わりに、スクリプトの冒頭にリストを作成したいと思います。人々は何を修正すべきかを知るためにすべてのスクリプトを読む必要はなく、最初は変数だけを読むでしょう。 – Mike
@longneck、あなたがこれを行う現実の状況については、このページの16kの訪問者に加えて、67kの訪問者にhttp://stackoverflow.com/q/12176709/632951を問い合わせてください。 – Pacerier