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

MySQL字段自增自減的SQL語(yǔ)句示例介紹

 更新時(shí)間:2014年02月07日 11:49:43   作者:  
MySQL的自增語(yǔ)句大家應(yīng)該都很熟悉,本文為大家介紹下MySQL字段自增自減的SQL語(yǔ)句,需要的朋友可以參考下
MySQL的自增語(yǔ)句大家應(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ì)字段 無(wú)符號(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的語(yǔ)法函數(shù)等等。。。試了下面的語(yǔ)句可以直接一條語(yǔ)句完成,也就是加個(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 無(wú)符號(hào)狀態(tài)下的最大值,其他字段類型請(qǐng)進(jìn)行相應(yīng)調(diào)整

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

2014/02/03 補(bǔ)充:剛開始是這么寫的,后來(lái)發(fā)現(xiàn)太笨了,稍微改下:
復(fù)制代碼 代碼如下:

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

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

相關(guān)文章

最新評(píng)論

桐庐县| 三门县| 左云县| 罗定市| 柏乡县| 阿克陶县| 绥棱县| 尉犁县| 宜都市| 通州区| 双峰县| 清苑县| 黄石市| 于田县| 公主岭市| 华蓥市| 甘孜| 大洼县| 红安县| 昌宁县| 莱阳市| 来凤县| 长海县| 旌德县| 百色市| 习水县| 同德县| 阜康市| 东城区| 辽阳县| 建昌县| 浮山县| 芮城县| 临汾市| 房山区| 怀来县| 红桥区| 湘西| 化隆| 庆城县| 鸡泽县|