2015-11-05 3 views
1

У меня есть таблица, которая в основном выглядит следующим образом:Любой способ запустить эквивалент for for в MySQL?

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 для обновления каждого поля имени в таблице? Для последнего это что-то вроде этого возможно?

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

Не знаю, почему вы хотите изменить все строки, в то же значение - но вы могли бы рассмотреть хранимую процедуру, которая действительно позволяет петли: http://stackoverflow.com/questions/5125096/for-loop-example-in-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