2015-11-05 68 views
1

我有一個表,基本上是這樣的:任何可以在MySQL中運行for循環的方法嗎?

ID   Name 
1   test1 
2   test2 
n   testn 

我想寫一個查詢,第一更新1行的時間,那麼如果我感覺貪婪,更新所有行。我嘗試了像這樣的用戶定義變量:

SET @x = '1'; 
SET @name = CONCAT('test', @x); 
UPDATE mytable SET Name = @name WHERE ID = @x; 

但是這個查詢失敗。這是爲什麼查詢失敗了,是不是可以將其提高到像一個for循環在表中更新每個name字段?對於後者,是這樣的可能嗎?

<for loop> 
SET @x = Name; 
SET @name = CONCAT('test', @x); 
UPDATE mytable SET Name = @name WHERE ID = @x; 
<end loop> 
+0

不知道爲什麼你想要的所有行更改爲相同的值 - 但你可以考慮存儲的過程,它不會允許循環:http://stackoverflow.com /問題/ 5125096/for循環,例如,在MySQL的 – PaulF

+0

我不是足夠聰明,找出失敗。如果你的意思是這些名字沒有改變,那麼你正試圖用'test1'來替換'test1'! –

+0

你是什麼意思時'SET @x =名稱;'? 「Name」是什麼? – Alex

回答

1

任何問題:

UPDATE mytable 
    SET name = CONCAT('test',id) 
/* WHERE id = 1 /* If you want to limit it */ 
+0

或'UPDATE mytable SET name = CONCAT(name,id)':-) – Alex

+0

我試圖學習如何使用用戶定義變量 –

+0

@TheOneandOnlyChemistryBlob沒有提及在這個問題中,再加上你不會在這裏使用它們來學習任何東西。嘗試在整數表中進行累計和。 – Arth

相關問題