讓t
爲mysql表,n
爲其中的整數列。如果可以修改以下查詢以便表達式n - 10
只計算一次,我會感興趣。mysql更新語句中的用戶變量
UPDATE t SET n = if(n - 10 < 1, 1, n - 10) WHERE n = 5;
查詢是沒有意義的,我知道,但我需要用同樣的模式在實際應用中值10
和5
將PHP變量。
讓t
爲mysql表,n
爲其中的整數列。如果可以修改以下查詢以便表達式n - 10
只計算一次,我會感興趣。mysql更新語句中的用戶變量
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;
謝謝,我試圖做到這一點確切的事情,並添加括號是什麼使其工作。 – 2012-11-07 19:29:49
你可以做這樣的邏輯在PHP中:計算
$value = $n - 10;
$value = $value < 1 ? 1 : $value;
$sql = "UPDATE t SET n = $value WHERE n = $n";
謝謝,但我可能會過分簡化我的示例。實際上,我需要根據表中的其他列導出n的結果值。 – clime 2012-01-27 04:14:59
你是什麼意思只有一次是什麼呢? – JohnFx 2012-01-27 02:17:49
你爲什麼在乎,如果是。實際將結果寫入數據庫的速度會快數百萬倍。 – 2012-01-27 02:18:01
好吧,現在它被計算兩次(if中的每一次出現)。我希望n-10表達式只有一次 - 在給這樣的用戶變量賦值時:@tmp:= n - 10.但是我不知道確切的語法。 – clime 2012-01-27 02:24:07