令t
为mysql表,n
为整数列。如果可以修改以下查询以便表达式n - 10
只计算一次,我会感兴趣。
UPDATE t SET n = if(n - 10 < 1, 1, n - 10) WHERE n = 5;
我知道,查询没有意义,但我需要在实际应用程序中使用相同的模式,其中值10
和5
将是php变量。
答案 0 :(得分:3)
好吧,我终于找到了正确的语法。 @tmp := n - 10
周围的括号至关重要。
UPDATE t SET n = if((@tmp := n - 10) < 1, 1, @tmp) WHERE n = 5;
答案 1 :(得分:0)
你可以在php中执行这样的逻辑:
$value = $n - 10;
$value = $value < 1 ? 1 : $value;
$sql = "UPDATE t SET n = $value WHERE n = $n";