3

让我们t成为一个 mysql 表并n成为其中的一个整数列。如果可以修改以下查询以便n - 10只计算一次表达式,我会很感兴趣。

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

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

4

2 回答 2

4

好吧,我终于找到了正确的语法。周围的括号@tmp := n - 10很重要。

UPDATE t SET n = if((@tmp := n - 10) < 1, 1, @tmp) WHERE n = 5;
于 2012-01-27T03:36:16.450 回答
-1

您可以在 php 中执行这样的逻辑:

$value = $n - 10;
$value = $value < 1 ? 1 : $value;
$sql = "UPDATE t SET n = $value WHERE n = $n";
于 2012-01-27T03:48:32.233 回答