纯mySQL增量循环?

时间:2012-03-04 17:20:07

标签: mysql

不使用PHP或任何东西。有没有办法做这样的事情:

UPDATE myTable SET var1 = var1 + 1 IF var1 < 5 ELSE var1 = 0 WHERE [WHERE clause]

从来没有真正做过任何IF mySQL的东西,所以有点不确定?

因此,结果将是变量永远不会高于5并且如果在增加时为5,则重置为0.

TIA

4 个答案:

答案 0 :(得分:2)

您可以使用if()功能执行此操作:

UPDATE myTable SET var1 = if(var1 < 5, var1 + 1, 0) WHERE [WHERE clause]

答案 1 :(得分:2)

试试这个:

UPDATE myTable SET var1 = IF( var1 < 5, var1 + 1, 0 ) WHERE ...

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if

答案 2 :(得分:2)

使用IF()

UPDATE MyTable SET var1 = IF(var1 < 5, var1 + 1, 0) WHERE id = 1;

或者在这种情况下,更简单,只需使用modulo operator

UPDATE MyTable SET var1 = (var1 + 1) MOD 6 WHERE id = 1;

编辑:是的,我意识到如果范围在0..5之外开始,后者将不起作用,我只是认为意图是将数字保持在0和5之间(包括0和5)。如果我错了,请继续第一个:)

答案 3 :(得分:-1)

另一种可能性是有两个更新语句:

UPDATE myTable SET var1 = var1 + 1 WHERE [WHERE clause] AND var1 < 5;
UPDATE myTable SET var1 = 0 WHERE [WHERE clause] AND var1 > 5

请注意,我在第二个示例中使用的是var1>5而不是var1>=5,因为在第一个语句之前值为4的列已经更新为5我们不希望将它们重置为零。