在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不支持FOR EACH /等語法。你得到的最接近的就是使用遊標。此外,SQL中沒有數組語法 - 您必須使用:
SELECT 2 FROM DUAL
UNION ALL
SELECT 34 FROM DUAL
UNION ALL
SELECT 24 FROM DUAL
...在SQL中構建等效的「數組值」。
SQL腳本將具有單獨的INSERT語句。你會看到使用PHP/Java /等。使用FOR循環式的語法,就像你的例子中提供的那樣。
在什麼可能的現實世界的情況下,你想這樣做?如果數組來自SELECT語句,那麼您應該只是INSERT ... SELECT。如果數組來自您的應用程序,那麼您應該將INSERT INTO EXEMPLE VALUES(@value,2),(@ value,5),(@ value,2)... – longneck 2009-09-16 16:19:50
我只想做一個維護腳本來添加新的值。我想在腳本的開頭創建一個列表,而不是每個插入的複製粘貼。人們不必讀取所有的腳本來知道要修改什麼,而只需要在變量的開頭。 – Mike 2009-09-16 16:48:40
@longneck,在此頁面上詢問16k位訪問者,再加上http://stackoverflow.com/q/12176709/632951上的67k位訪問者,以瞭解真實世界的情況,您可以這樣做。 – Pacerier 2015-04-16 06:13:16