2009-09-16 48 views
6

在MySQL腳本中是否有一種方法來聲明一個數組(或任何集合)並循環執行它?在mysql中的數組變量

例如,

SET @myArrayOfValue=[2,5,2,23,6] 


for each @value in @myArrayOfValue 
    INSERT INTO EXEMPLE VALUES(@value, 'hello'); 
end for each 
+4

在什麼可能的現實世界的情況下,你想這樣做?如果數組來自SELECT語句,那麼您應該只是INSERT ... SELECT。如果數組來自您的應用程序,那麼您應該將INSERT INTO EXEMPLE VALUES(@value,2),(@ value,5),(@ value,2)... – longneck 2009-09-16 16:19:50

+3

我只想做一個維護腳本來添加新的值。我想在腳本的開頭創建一個列表,而不是每個插入的複製粘貼。人們不必讀取所有的腳本來知道要修改什麼,而只需要在變量的開頭。 – Mike 2009-09-16 16:48:40

+0

@longneck,在此頁面上詢問16k位訪問者,再加上http://stackoverflow.com/q/12176709/632951上的67k位訪問者,以瞭解真實世界的情況,您可以這樣做。 – Pacerier 2015-04-16 06:13:16

回答

2

沒有,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循環式的語法,就像你的例子中提供的那樣。

+0

我不介意使用遊標,但值需要來自像這樣的SET @myValues [2,34,22]。 Thanx – Mike 2009-09-16 17:03:18

+0

Thanx,這就是我正在尋找。該語法太難以使用,但它提出了我的問題。 – Mike 2009-09-16 17:24:54

0

您能否使用類似MySQL SET的東西?而不是通過循環你可以存儲在SET中的值。

+0

不,我不能,我需要在不同的行中插入值。我想要做到這一點,使腳本易於使用。 – Mike 2009-09-16 16:52:49

+0

使用PHP(或其他)並循環遍歷每個數組,然後執行一個簡單的插入,然後 – 2009-09-16 17:08:13

+0

我需要它在mySQL腳本中。 – Mike 2009-09-16 17:17:50