不使用PHP或任何东西。有没有办法做这样的事情:
UPDATE myTable SET var1 = var1 + 1 IF var1 < 5 ELSE var1 = 0 WHERE [WHERE clause]
从来没有真正做过任何IF mySQL的东西,所以有点不确定?
因此,结果将是变量永远不会高于5并且如果在增加时为5,则重置为0.
TIA
答案 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
我们不希望将它们重置为零。