2012-01-27 50 views
3

t爲mysql表,n爲其中的整數列。如果可以修改以下查詢以便表達式n - 10只計算一次,我會感興趣。mysql更新語句中的用戶變量

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

查詢是沒有意義的,我知道,但我需要用同樣的模式在實際應用中值105將PHP變量。

+0

你是什麼意思只有一次是什麼呢? – JohnFx 2012-01-27 02:17:49

+0

你爲什麼在乎,如果是。實際將結果寫入數據庫的速度會快數百萬倍。 – 2012-01-27 02:18:01

+0

好吧,現在它被計算兩次(if中的每一次出現)。我希望n-10表達式只有一次 - 在給這樣的用戶變量賦值時:@tmp:= n - 10.但是我不知道確切的語法。 – clime 2012-01-27 02:24:07

回答

3

好吧,我終於找到了正確的語法。圍繞@tmp := n - 10的括號至關重要。

UPDATE t SET n = if((@tmp := n - 10) < 1, 1, @tmp) WHERE n = 5; 
+0

謝謝,我試圖做到這一點確切的事情,並添加括號是什麼使其工作。 – 2012-11-07 19:29:49

0

你可以做這樣的邏輯在PHP中:計算

$value = $n - 10; 
$value = $value < 1 ? 1 : $value; 
$sql = "UPDATE t SET n = $value WHERE n = $n"; 
+1

謝謝,但我可能會過分簡化我的示例。實際上,我需要根據表中的其他列導出n的結果值。 – clime 2012-01-27 04:14:59