《Mysql實(shí)例MySQL字段自增自減的SQL語句示例介紹》要點(diǎn):
本文介紹了Mysql實(shí)例MySQL字段自增自減的SQL語句示例介紹,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
MySQL的自增語句年夜家應(yīng)該都很熟悉 也很簡單
代碼如下:
update `info` set `comments` = `comments`+1 WHERE `id` = 32
這樣就可以了,但是有時(shí)候我們會(huì)涉及到做減法,
例如:文章的評(píng)論數(shù),在刪除或者鎖定了一條評(píng)論之后需要對(duì)該文章總評(píng)論數(shù)減一
comments smallint(5) unsigned 文章評(píng)論總數(shù)統(tǒng)計(jì)字段 無符號(hào)即 0 ~ 65535 之間的數(shù)值
1. 通常情況下是可以類似上面自增的辦法 把 +號(hào) 改成 -號(hào) 就行了,但問題是如果當(dāng)前 comments 統(tǒng)計(jì)數(shù)值為 0 時(shí) 再做減法將會(huì)變成該字段類型的最大數(shù)值 65535
代碼如下:
update `info` set `comments` = `comments`-1 WHERE `id` = 32
2. 為避免這個(gè)問題一般的想法只能是先根據(jù) id 主鍵查詢出文章 comments 統(tǒng)計(jì)字段值,再通過
PHP做減法,然后再 update 一次,前后總共需要執(zhí)行兩次SQL命令
本日google查了下沒找到這方面的資料,看了看MySQL的語法函數(shù)等等...試了下面的語句可以直接一條語句完成,也就是加個(gè) if 判斷,如下示例:
代碼如下:
update `info` set `comments` = IF(`comments`< 1,0,`comments`-1) WHERE `id` = 32
默認(rèn)comments為0時(shí), comments-1 = 65535;但測(cè)試了下 如果直接 判斷 comments-1=65535 好像不行,不知道什么原因,對(duì)這個(gè)不是很熟悉不知道是不是 這里的 if 不支持 = 號(hào),但是 comments-1 >= 65535 可以成立,于是當(dāng) comments 為 0 時(shí),IF(`comments`-1>=65535,0,`comments`-1) 將返回 0提示:最大數(shù)值 65535 是 smallint 無符號(hào)狀態(tài)下的最大值,其他字段類型請(qǐng)進(jìn)行相應(yīng)調(diào)整
----------------------------------------------------------------------------------------------------------------------
2014/02/03 彌補(bǔ):剛開始是這么寫的,后來發(fā)現(xiàn)太笨了,稍微改下:
代碼如下:
update `info` set `comments` = IF(`comments`<1, 0, `comments`-1) WHERE `id` = 32
要減x,就斷定是否小于x
《Mysql實(shí)例MySQL字段自增自減的SQL語句示例介紹》是否對(duì)您有啟發(fā),歡迎查看更多與《Mysql實(shí)例MySQL字段自增自減的SQL語句示例介紹》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/13659.html