t
を mysql テーブルとし、その中の整数n
列にします。n - 10
式が 1 回だけ計算されるように、次のクエリを変更できるかどうか興味があります。
UPDATE t SET n = if(n - 10 < 1, 1, n - 10) WHERE n = 5;
クエリは意味をなさないことはわかっていますが、実際のアプリケーションで同じパターンを使用する必要があり、値10
と5
php 変数になります。
t
を mysql テーブルとし、その中の整数n
列にします。n - 10
式が 1 回だけ計算されるように、次のクエリを変更できるかどうか興味があります。
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";