【发布时间】:2015-11-05 17:16:17
【问题描述】:
我有一个基本上看起来像这样的表:
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>
【问题讨论】:
-
不确定为什么要将所有行更改为相同的值 - 但您可以考虑使用允许循环的存储过程:stackoverflow.com/questions/5125096/for-loop-example-in-mysql
-
我不够聪明,无法找出失败的原因。如果您的意思是名称不会被更改,那么您正在尝试将
test1替换为test1! -
SET @x = Name;是什么意思?Name是什么? -
Name 是名为“Name”的列
标签: mysql user-variables