mysql更新字段问题
mysql中有一个int型的需要进行+1或-1操作,如何让其最小值为0,即当为0时-1还是0而不变成负的或者65535之类的现在的做法是先读出来然后判断是否为0然后判断是...
mysql中有一个int型的需要进行+1 或 -1 操作,如何让其最小值为0 ,即当为0 时 -1还是0
而不变成负的 或者 65535之类的
现在的做法是先读出来然后判断是否为0 然后判断是否进行-1操作
有没有别的省心的办法 展开
而不变成负的 或者 65535之类的
现在的做法是先读出来然后判断是否为0 然后判断是否进行-1操作
有没有别的省心的办法 展开
展开全部
有一个解决方案是使用mysql 的 case when 条件判断。假定你的整型字段名为field_1,表名为table_x,则以下语句可以解决你的问题。
update table_x set field_1= (case when field_1 =0 then 0 else field_1-1 end) where field_x='xxxx';
即是你要的效果。注意执行的时候的where条件不要漏掉哦。
但我个人不是很赞成这种用法,一是业务逻辑封装在sql中很不清楚,当业务变化的时候改动可能影响其他功能,二是降低了mysql的性能,如果数据量很大,影响可能会明显。
视你的情况来使用吧。
update table_x set field_1= (case when field_1 =0 then 0 else field_1-1 end) where field_x='xxxx';
即是你要的效果。注意执行的时候的where条件不要漏掉哦。
但我个人不是很赞成这种用法,一是业务逻辑封装在sql中很不清楚,当业务变化的时候改动可能影响其他功能,二是降低了mysql的性能,如果数据量很大,影响可能会明显。
视你的情况来使用吧。
展开全部
假定表名tb,字段fd,主键id为1,当减1时
update tb set fd=fd-1 where id=1 and fd>0
update tb set fd=fd-1 where id=1 and fd>0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
update table set num = case when num < 1 then 0 end where id =
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1楼答案很棒
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询