【问题标题】:Any way to run a for loop equivalent in MySQL? [closed]有什么方法可以在 MySQL 中运行等效的 for 循环? [关闭]
【发布时间】: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


【解决方案1】:

有什么问题:

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

【讨论】:

  • UPDATE mytable SET name = CONCAT(name,id) :-)
  • 我正在尝试学习如何使用用户定义的变量
  • @TheOneandOnlyChemistryBlob 问题中没有提到,而且在这里使用它们不会真正学到任何东西。尝试对整数表进行累积和。
猜你喜欢
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 2020-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多