假设有一个名为t的MySQL表格和其中一个整数列n。我想知道以下查询语句是否可以修改,使得表达式n - 10只计算一次。
UPDATE t SET n = if(n - 10 < 1, 1, n - 10) WHERE n = 5;
查询没有意义,我知道,但我需要在真实应用程序中使用相同的模式,其中值10和5将是php变量。
假设有一个名为t的MySQL表格和其中一个整数列n。我想知道以下查询语句是否可以修改,使得表达式n - 10只计算一次。
UPDATE t SET n = if(n - 10 < 1, 1, n - 10) WHERE n = 5;
查询没有意义,我知道,但我需要在真实应用程序中使用相同的模式,其中值10和5将是php变量。
好的,我终于找到了正确的语法。在@tmp := n - 10周围加上括号至关重要。
UPDATE t SET n = if((@tmp := n - 10) < 1, 1, @tmp) WHERE n = 5;
你可以在 PHP 中使用这样的逻辑:
$value = $n - 10;
$value = $value < 1 ? 1 : $value;
$sql = "UPDATE t SET n = $value WHERE n = $n";