最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL字段自增自減的SQL語句示例介紹

 更新時(shí)間:2014年02月07日 11:49:43   作者:  
MySQL的自增語句大家應(yīng)該都很熟悉,本文為大家介紹下MySQL字段自增自減的SQL語句,需要的朋友可以參考下
MySQL的自增語句大家應(yīng)該都很熟悉 也很簡(jiǎn)單
復(fù)制代碼 代碼如下:

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
復(fù)制代碼 代碼如下:

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 判斷,如下示例:
復(fù)制代碼 代碼如下:

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)太笨了,稍微改下:
復(fù)制代碼 代碼如下:

update `info` set `comments` = IF(`comments`<1, 0, `comments`-1) WHERE `id` = 32

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

相關(guān)文章

最新評(píng)論

霍邱县| 皮山县| 资中县| 苏尼特右旗| 江北区| 永福县| 恩平市| 萍乡市| 灵川县| 丹巴县| 大姚县| 琼海市| 陇川县| 奉新县| 昔阳县| 砚山县| 弥勒县| 台州市| 色达县| 吉木乃县| 基隆市| 巧家县| 兰考县| 西盟| 阳谷县| 米脂县| 册亨县| 栾城县| 确山县| 金昌市| 股票| 大洼县| 武义县| 东山县| 西峡县| 冕宁县| 会泽县| 新乡县| 信丰县| 五台县| 铁岭县|