mysql update语句中的用户变量

时间:2012-01-27 02:14:10

标签: mysql sql-update user-variables

t为mysql表,n为整数列。如果可以修改以下查询以便表达式n - 10只计算一次,我会感兴趣。

UPDATE t SET n = if(n - 10 < 1, 1, n - 10) WHERE n = 5;

我知道,查询没有意义,但我需要在实际应用程序中使用相同的模式,其中值105将是php变量。

2 个答案:

答案 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";