2015-11-05 36 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

相关问题