2012-07-25 47 views
-1

在mysql中,可以在命令「SET」中創建一個分支?Fork inline Mysql

像這樣:

UPDATE `table`.`data` SET `hits` = (`hits`-1<0 ? 0:`hits`-1) WHERE `data`.`id`='15'; 
+0

看來奇怪的,你會想減一ID,然後如果結果是肯定的,用零。 ID通常是積極的。甚至陌生人,你有一個要求id爲15的where子句,所以你肯定知道id-1不會是負面的。你確定你的僞代碼是正確的嗎? – 2012-07-25 22:12:06

+0

只是一個例子,不用擔心。我錯誤地把'id'放在FORK – 2012-07-27 18:34:28

+0

之內因爲反對票?我不明白? – 2015-01-07 16:22:00

回答

2

使用IF function

UPDATE `table`.`data` 
SET `hits` = IF(`id` - 1 > 0, 0, `id` - 1) 
WHERE `data`.`id`='15'; 

在您也可以使用LEAST這種特殊情況下。

UPDATE `table`.`data` 
SET `hits` = LEAST(`id` - 1, 0) 
WHERE `data`.`id`='15'; 

雖然你的代碼似乎錯了。我幾乎可以肯定,你的意思是這樣寫:

UPDATE yourtable 
SET hits = GREATEST(0, hits - 1) 
WHERE id = 15;