热门

PHP数组的两种合并方法与差异

MySQL字段自增自减的SQL语句

Provisional headers are shown

PHP会话安全性的原则

git统计代码提交行数

Redis的各项功能解决了哪些问题?

商场促销 --- 策略模式

拍摄UFO --- 单一职责原则

PHP 依赖注入

简单工厂模式

MySQL字段自增自减的SQL语句

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;


内容来源:phphub.net