2012-03-04 83 views
0

不使用PHP或任何东西。有没有办法做到这样的事情:纯mySQL增量循环?

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

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

所以结果将是可变永远不会高于5和递增当在5如果其复位为0。

TIA

回答

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

的模伎俩是好的,但是当有负数会失败;) – knittl 2012-03-04 17:39:29

+0

会发生什么,然后VAR1超过6,再次将数据设置为1,2, 3,4,5,0,1,2,4,5, – Starx 2012-03-04 17:40:02

+0

@knittl是的,我意识到,写它后,却让它呆在那里,因为我觉得目的是为了保持0 :) – 2012-03-04 17:42:03

2

您可以用if()功能做到这一点:

UPDATE myTable SET var1 = if(var1 < 5, var1 + 1, 0) WHERE [WHERE clause] 
-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,我们不希望这些重置为零。

+0

嘿!感谢您的downvote,我现在看到我的错...... – knittl 2012-03-04 17:35:51