天天看點

MySQL字段自增自減的SQL語句

mysql的自增語句大家應該都很熟悉 也很簡單

這樣就可以了,但是有時候我們會涉及到做減法,

例如:文章的評論數,在删除或者鎖定了一條評論之後需要對該文章總評論數減一

comments smallint(5) unsigned 文章評論總數統計字段 無符号即 0 ~ 65535 之間的數值

1. 通常情況下是可以類似上面自增的方法 把 +号 改成 -号 就行了,但問題是如果目前 comments 統計數值為 0 時 再做減法将會變成該字段類型的最大數值 65535

2. 為避免這個問題一般的想法隻能是先根據 id 主鍵查詢出文章 comments 統計字段值,再通過php做減法,然後再 update 一次,前後總共需要執行兩次sql指令

今天google查了下沒找到這方面的資料,看了看mysql的文法函數等等。。。試了下面的語句可以直接一條語句完成,也就是加個 if 判斷,如下示例:

預設comments為0時, comments-1 = 65535;但測試了下 如果直接 判斷 comments-1=65535 好像不行,不知道什麼原因,對這個不是很熟悉不知道是不是 這裡的 if 不支援 = 号,但是 comments-1 >= 65535 可以成立,于是當 comments 為 0 時,if(`comments`-1>=65535,0,`comments`-1) 将傳回 0提示:最大數值 65535 是 smallint 無符号狀态下的最大值,其他字段類型請進行相應調整

----------------------------------------------------------------------------------------------------------------------

2014/02/03 補充:剛開始是這麼寫的,後來發現太笨了,稍微改下:

要減x,就判斷是否小于x