国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

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

2020-01-18 23:24:22
字體:
來源:轉載
供稿:網友
MySQL的自增語句大家應該都很熟悉 也很簡單
復制代碼 代碼如下:

update `info` set `comments` = `comments`+1 WHERE `id` = 32

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

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

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

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

update `info` set `comments` = `comments`-1 WHERE `id` = 32

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

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

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

默認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 補充:剛開始是這么寫的,后來發現太笨了,稍微改下:
復制代碼 代碼如下:

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

要減x,就判斷是否小于x
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扶绥县| 巩义市| 大埔县| 云南省| 仙居县| 宁都县| 汨罗市| 贡觉县| 竹溪县| 金坛市| 司法| 德格县| 宜兰县| 呼图壁县| 岳普湖县| 海宁市| 嘉祥县| 临桂县| 道真| 兴义市| 海伦市| 双峰县| 莲花县| 科尔| 尚义县| 滦南县| 江西省| 依兰县| 苍梧县| 新巴尔虎右旗| 镇远县| 大关县| 天全县| 依安县| 忻州市| 凉山| 明光市| 行唐县| 临江市| 黄梅县| 古田县|